Files
linux-practice/__pycache__/sandbox.cpython-312.pyc

116 lines
21 KiB
Plaintext
Raw Normal View History

<EFBFBD>
x<><78>i4K<00><00><><00>dZddlZidddgd<06>d<07><03>dddgd <09>d<07><03>d
d d d d<0E><03>dd d dd<0E><03>dddddgd<07><03>dd d dd<0E><03>dd d dd<0E><03>dddddgd<07><03>dddddgd<07><03>dd d dd<0E><03>d d d d!d<0E><03>d"ddgd#<23>d<07><03>d$d d%d&d<0E><03>d'd d%d(d<0E><03>d)d d%d*d<0E><03>d+ddd,d-gd<07><03>d.d d d/d<0E><03>d d d0d<0E>ddd1gd<07>d d d2d<0E>d3<64><03>Zid4gd5<64>d6d7<64><02>d8d9d6i<01>d:i<00>d;d<d6i<01>d=d9d6i<01>d>d?gd6d7<64><02>d@d?gd6d7<64><02>dAgdB<64>d6d6dC<64><03>dDgdE<64>d6d7<64><02>dFdGdHgd6d7<64><02>dIdJgdK<64>i<01>dLgdM<64>d6d7<64><02>dNd9d6i<01>dOd9d6i<01>dPd9d6i<01>dQd9d6i<01>dRi<00>dJd?gid9d6idS<64><02>ZGdT<64>dU<64>ZedVk(r<>e<04>ZedW<64>eejd4<64><00>eejd:<3A><00>eejdX<64><00>eejdY<64><00>eejdZ<64><00>eejd[<5B><00>eejd\<5C><00>yy)]u<>
Linux 命令沙盒模拟器
- 零风险:不真实执行系统命令
- 模拟文件系统:虚拟内存字典结构
- 命令白名单:只允许安全命令
- 场景匹配:检查命令是否答对
<EFBFBD>N<>/<2F>dirzr-x)<04>users<72>projects<74>logs<67> sandbox_tips)<03>type<70>perm<72>childrenz/users)z alice.txtzbob.txt<78>charliez/users/alice.txt<78>filezr--zHi, I'm Alice. I love Linux!)r r
<00>contentz/users/bob.txtz%Hello from Bob. Learning Linux daily.z/users/charliez
profile.mdz
skills.txtz/users/charlie/profile.mdz/# Charlie
Loves open source and Linux commands.z/users/charlie/skills.txtzLinux
Python
Git
Dockerz /projects<74>web<65>backendz /projects/webz
index.htmlz style.cssz/projects/web/index.htmlz-<html><body>Hello Linux Sandbox</body></html>z/projects/web/style.cssz!body { font-family: sans-serif; }z/projects/backend)zapp.pyzmodel.pyzutils.pyz/projects/backend/app.pyzrw-zMdef main():
print('Hello, Linux!')
if __name__ == '__main__':
main()z/projects/backend/model.pyzBclass User:
def __init__(self, name):
self.name = namez/projects/backend/utils.pyz'def log(msg):
print(f'[LOG] {msg}')z/logsz
access.logz error.logz/logs/access.logzi2024-01-01 10:00 GET /index.html 200
2024-01-01 10:01 POST /api/login 200
2024-01-01 10:02 GET /about 404zP2024-01-01 10:02 ERROR Page not found
2024-01-01 10:03 WARNING High memory usagez welcome.txtzkWelcome to Linux Sandbox!
You can practice commands safely here.
Try 'ls', 'cat', 'grep', 'find' and more!)z/logs/error.logz /sandbox_tipsz/sandbox_tips/welcome.txt<78>ls)<06>-lz-a<>-hz-Rz-tz-ST)<02>flags<67>path<74>cdr<00>pwd<77>echo<68>rest<73>cat<61>head<61>-n<>tail<69>grep)<03>-i<>-rr)r<00>patternr<00>find)<03>-type<70>-namez-size<7A>durz-s<>sortr)r rr<00>wc<77>r<00>-w<>-c<>mkdir<69>touch<63>cp<63>mv<6D>whoami)<02>history<72>statc<00>\<00>eZdZd<01>Zdededeeeffd<05>Zdedefd<07>Z dede
dzfd <09>Z dedefd
<EFBFBD>Z dedefd <0B>Z dedefd <0C>Zdefd <0A>Zdedefd<0E>Zdedefd<0F>Zdedefd<10>Zdedefd<11>Zdededefd<13>Zddededefd<14>Zdedefd<15>Zdedefd<16>Zdedefd<17>Zdedefd<18>Zdedefd<19>Zdede
fd<1B>Zy)<1D> LinuxSandboxc<00>.<00>d|_g|_d|_y)Nr)<03>cwdr0<00> current_task<73><01>selfs <20>
sandbox.py<70>__init__zLinuxSandbox.__init__<5F>s<00><00><16><04><08><19><04> <0C> <20><04><19><00>cmd_name<6D>args<67>returnc<00><><00>|tvrdd|<01>d<03>fSt|}|D])}|jd<04>s<01>d|vs<01>||dvs<01>"dd|<04><00>fcSy)u3验证命令是否在白名单 + 参数是否合法Fu❌ 拒绝执行 'u'不在允许列表<E8A1A8>-ru❌ 不支持参数: )T<>)<02> ALLOWED_CMDS<44>
startswith)r8r<r=<00>rule<6C>args r9<00>check_permissionszLinuxSandbox.check_permissions<6E>ss<00><00> <13><<3C> '<27><18>.<2E>x<EFBFBD>j<EFBFBD>8Q<38>R<>R<> R<><1B>H<EFBFBD>%<25><04><18> @<01>C<EFBFBD><12>~<7E>~<7E>c<EFBFBD>"<22><1A>d<EFBFBD>?<3F>s<EFBFBD>$<24>w<EFBFBD>-<2D>'?<3F> <20>$9<>#<23><15>"?<3F>?<3F>?<3F> @<01>
r;rc<00><00>|jd<01>r|S|dk(r |jS|dk(r7dj|jjd<01>dd<00>xsd}|r|SdS|jj d<01><00>d|<01><00>S)u(解析相对/绝对路径简化版r<00>.z..N<><4E><EFBFBD><EFBFBD><EFBFBD>)rCr5<00>join<69>split<69>rstrip)r8r<00>parents r9<00> resolve_pathzLinuxSandbox.resolve_path<74>s}<00><00> <0F>?<3F>?<3F>3<EFBFBD> <1F><17>K<EFBFBD> <0F>3<EFBFBD>;<3B><17>8<EFBFBD>8<EFBFBD>O<EFBFBD> <0F>4<EFBFBD><<3C><18>X<EFBFBD>X<EFBFBD>d<EFBFBD>h<EFBFBD>h<EFBFBD>n<EFBFBD>n<EFBFBD>S<EFBFBD>1<>#<23>2<EFBFBD>6<>7<>><3E>3<EFBFBD>F<EFBFBD>#<23>6<EFBFBD> ,<2C><13> ,<2C><16>(<28>(<28>/<2F>/<2F>#<23>&<26>'<27>q<EFBFBD><14><06>/<2F>/r;Nc<00>,<00>tj|<01>S)u从虚拟 FS 中获取节点)<02>
SANDBOX_FS<EFBFBD>get)r8rs r9<00>
get_fspathzLinuxSandbox.get_fspath<74>s<00><00><19>~<7E>~<7E>d<EFBFBD>#<23>#r;c<00><><00>|shtj|j<00>}|r|jd<01>dk7rd|j<00>d<04>S|jdg<00>}dj|<03>S|d}|j |<04>}|j |<05>}|sd|<04>d <09>S|ddk7rd|<04>d
<EFBFBD>Sdj|jdg<00><00>S) u模拟 ls 命令r rzls: z: Not a directoryr <00> rzls: cannot access '<27>': No such file or directoryz': Not a directory)rPrQr5rJrNrR)r8r=<00>noder r<00>resolveds r9<00> _simulate_lszLinuxSandbox._simulate_ls<6C>s<><00><00><13><1D>><3E>><3E>$<24>(<28>(<28>+<2B>D<EFBFBD><17>4<EFBFBD>8<EFBFBD>8<EFBFBD>F<EFBFBD>+<2B>u<EFBFBD>4<><1D>d<EFBFBD>h<EFBFBD>h<EFBFBD>Z<EFBFBD>'8<>9<>9<><1B>x<EFBFBD>x<EFBFBD>
<EFBFBD>B<EFBFBD>/<2F>H<EFBFBD><17>9<EFBFBD>9<EFBFBD>X<EFBFBD>&<26> &<26><14>A<EFBFBD>w<EFBFBD><04><17>$<24>$<24>T<EFBFBD>*<2A><08><13><EFBFBD><EFBFBD>x<EFBFBD>(<28><04><13>(<28><14><06>.J<>K<> K<> <0F><06><<3C>5<EFBFBD> <20>(<28><14><06>.@<40>A<> A<><13>y<EFBFBD>y<EFBFBD><14><18><18>*<2A>b<EFBFBD>1<>2<>2r;c<00><><00>|sy|d}|j|<02>}|j|<03>}|sd|<02>d<04>S|ddk7rd|<02>d<07>S|jdd <09>S)
u模拟 cat 命令zcat: missing operandrzcat: <20>: No such file or directoryr r <00>: Is a directoryrrA)rNrRrQ<00>r8r=rrWrVs r9<00> _simulate_catzLinuxSandbox._simulate_cat<61>so<00><00><13>)<29><13>A<EFBFBD>w<EFBFBD><04><17>$<24>$<24>T<EFBFBD>*<2A><08><13><EFBFBD><EFBFBD>x<EFBFBD>(<28><04><13><1A>4<EFBFBD>&<26> ;<3B><<3C> <<3C> <0F><06><<3C>6<EFBFBD> !<21><1A>4<EFBFBD>&<26> 0<>1<> 1<><13>x<EFBFBD>x<EFBFBD> <09>2<EFBFBD>&<26>&r;c<00><><00>|r|ddk(rd|_y|d}|j|<02>}|j|<03>}|r|ddk7rd|<02>d<08>S||_y) u模拟 cd 命令r<00>~z/homerAr rzcd: rZ)r5rNrRr\s r9<00> _simulate_cdzLinuxSandbox._simulate_cd<63>sh<00><00><13>t<EFBFBD>A<EFBFBD>w<EFBFBD>#<23>~<7E><1E>D<EFBFBD>H<EFBFBD><15><13>A<EFBFBD>w<EFBFBD><04><17>$<24>$<24>T<EFBFBD>*<2A><08><13><EFBFBD><EFBFBD>x<EFBFBD>(<28><04><13>t<EFBFBD>F<EFBFBD>|<7C>u<EFBFBD>,<2C><19>$<24><16>:<3A>;<3B> ;<3B><1B><04><08>r;c<00><00>|jS)u模拟 pwd 命令)r5r7s r9<00> _simulate_pwdzLinuxSandbox._simulate_pwd<77>s <00><00><13>x<EFBFBD>x<EFBFBD>r;c<00>$<00>dj|<01>S)u模拟 echo 命令<E591BD> )rJ<00>r8r=s r9<00>_simulate_echozLinuxSandbox._simulate_echo<68>s<00><00><12>x<EFBFBD>x<EFBFBD><04>~<7E>r;c<00>><00>t|<01>dkryd}g}d}|t|<01>krZ||dk(s||dk(s||jd<07>r|dz }n!|s||}n|j||<00>|dz }|t|<01>kr<01>Z|r|sydd l}g}|D<00>]{}d
|vr<>d |vr|j d <0B>dn|j
j d <0B>}|jd
d <0C>} tD]<5D>}
|
j|<08>s<01>t|
d dk(s<01>%|j| |
j d <0B>d<00>s<01>K|j|
<EFBFBD>} | s<01>_| d dk(s<01>h| jdd<03>j d<11>} | D]} || vs<01>|j|
<EFBFBD>d| <0A><00><03><00><00><><00><01>|j|<07>}|j|<0E>} | sd|<07>d<14>cS| d dk7rd|<07>d<15>cS| jdd<03>j d<11>} | D]} || vs<01>|j| <0A><00><00><01>~|rdj|<06>SdS)u模拟 grep 命令<E591BD>zgrep: missing file operandrArr rr@zgrep: pattern or file missingN<67>*rz.*r r rIr<00>
<EFBFBD>:zgrep: rZr[)<0E>lenrC<00>append<6E>rerKr5rL<00>replacerP<00>matchrRrQrNrJ)r8r=r!<00>paths<68>irn<00>results<74>path_arg<72>prefix<69> pattern_part<72>keyrV<00>lines<65>linerWs r9<00>_simulate_grepzLinuxSandbox._simulate_grep<65>sG<00><00> <0F>t<EFBFBD>9<EFBFBD>q<EFBFBD>=<3D>/<2F><14><07><12><05> <0E><01><0F>#<23>d<EFBFBD>)<29>m<EFBFBD><13>A<EFBFBD>w<EFBFBD>$<24><EFBFBD>$<24>q<EFBFBD>'<27>T<EFBFBD>/<2F>T<EFBFBD>!<21>W<EFBFBD>5G<35>5G<35><03>5L<35><11>Q<EFBFBD><06><01><1E>"<22>1<EFBFBD>g<EFBFBD>G<EFBFBD><19>L<EFBFBD>L<EFBFBD><14>a<EFBFBD><17>)<29><11>Q<EFBFBD><06><01><10>#<23>d<EFBFBD>)<29>m<EFBFBD><17>e<EFBFBD>2<> <12><14><07><1D> -<2D>H<EFBFBD><12>h<EFBFBD><EFBFBD>36<33>(<28>?<3F><18><1E><1E><03>,<2C>Q<EFBFBD>/<2F><04><08><08><0F><0F>X[<5B>H\<5C><06>'<27>/<2F>/<2F><03>T<EFBFBD>:<3A> <0C>%<25>H<01>C<EFBFBD><1A>~<7E>~<7E>f<EFBFBD>-<2D>*<2A>S<EFBFBD>/<2F>&<26>2I<32>V<EFBFBD>2S<32>#<23>2<EFBFBD>8<EFBFBD>8<EFBFBD>L<EFBFBD>#<23>)<29>)<29>C<EFBFBD>.<2E><12>2D<32>E<>#'<27>?<3F>?<3F>3<EFBFBD>#7<>D<EFBFBD>#<23><04>V<EFBFBD> <0C><06>(><3E>(,<2C><08><08><19>B<EFBFBD>(?<3F>(E<>(E<>d<EFBFBD>(K<><05>,1<>!H<01>D<EFBFBD>'.<2E>$<24><EFBFBD>(/<2F><0E><0E>#<23><15>a<EFBFBD><04>v<EFBFBD><EFBFBD>(G<>!H<01> H<01> <20>,<2C>,<2C>X<EFBFBD>6<><08><1B><EFBFBD><EFBFBD>x<EFBFBD>0<><04><1B>#<23>H<EFBFBD>:<3A>-H<>I<>I<><17><06><<3C>6<EFBFBD>)<29>#<23>H<EFBFBD>:<3A>-=<3D>><3E>><3E><1C><08><08><19>B<EFBFBD>/<2F>5<>5<>d<EFBFBD>;<3B><05>!<21>-<2D>D<EFBFBD><1E>$<24><EFBFBD><1F><0E><0E>t<EFBFBD>,<2C>-<2D>/ -<2D>6&-<2D>t<EFBFBD>y<EFBFBD>y<EFBFBD><17>!<21>4<>"<22>4r;c<00><><00>|j}d}d}d}|t|<01>kr<>||}|jd<03>rN|dk(r|dzt|<01>kr||dz}|dz }n@|dk(r|dzt|<01>kr||dz}|dz }n|dz }n|j|<06>}|dz }|t|<01>kr<01><>|<03>d}|<04>d }g}tD]p}|j|<02>s<01>t|d
|k(s<01>%|j d <0B>d } |d k(s"| j |jd d <0A><00>s<01>`|j|<08><00>r|rdj|<07>Sd S)u!模拟 find 命令简化版Nrr@r#rh<00>r$<00>frir rrIrArj)
r5rlrCrNrPrK<00>endswithrormrJ)
r8r=r<00> file_type<70> name_patternrrrErsrw<00>filenames
r9<00>_simulate_findzLinuxSandbox._simulate_find5si<00><00>
<14>x<EFBFBD>x<EFBFBD><04><18> <09><1B> <0C> <0A><01><0F>#<23>d<EFBFBD>)<29>m<EFBFBD><16>q<EFBFBD>'<27>C<EFBFBD><12>~<7E>~<7E>c<EFBFBD>"<22><16>'<27>><3E>a<EFBFBD>!<21>e<EFBFBD>c<EFBFBD>$<24>i<EFBFBD>&7<> $<24>Q<EFBFBD><11>U<EFBFBD> <0B>I<EFBFBD><15><11>F<EFBFBD>A<EFBFBD><18>G<EFBFBD>^<5E><01>A<EFBFBD><05><03>D<EFBFBD> <09>(9<>#'<27><01>A<EFBFBD><05>;<3B>L<EFBFBD><15><11>F<EFBFBD>A<EFBFBD><15><11>F<EFBFBD>A<EFBFBD><1B>(<28>(<28><13>-<2D><04><11>Q<EFBFBD><06><01><10>#<23>d<EFBFBD>)<29>m<EFBFBD> <15> <1C><1B>I<EFBFBD> <18> <1F><1E>L<EFBFBD><15><07><1D> (<28>C<EFBFBD><12>~<7E>~<7E>d<EFBFBD>#<23>
<EFBFBD>3<EFBFBD><0F><06>(?<3F>9<EFBFBD>(L<><1E>9<EFBFBD>9<EFBFBD>S<EFBFBD>><3E>"<22>-<2D><08><1F>3<EFBFBD>&<26>(<28>*;<3B>*;<3B>L<EFBFBD><P<><P<>QT<51>VX<56><Y<>*Z<><1B>N<EFBFBD>N<EFBFBD>3<EFBFBD>'<27>  (<28>&-<2D>t<EFBFBD>y<EFBFBD>y<EFBFBD><17>!<21>4<>"<22>4r;c<00><00>|j}d}d}|t|<01>krZ||dk(s||dk(rd}|dz }n3||jd<07>r|dz }n|j||<00>}|dz }|t|<01>kr<01>Z|j |<02>}|r|dd k7rd
|<02>d <0B>Sdd d <0A>}d}|j dg<00>}|D]D} |j d<0F><00>d| <09><00>}
|j |
<EFBFBD>} | s<01>-||j | dd<06>z }<07>F|<07>d|<02><00>S)u模拟 du 命令Frz-shrTrhr@r rzdu: rZ<00>)r rr rzK )r5rlrCrNrRrQrL) r8r=r<00>show_allrrrV<00>size_map<61>totalr <00>child<6C>
child_path<EFBFBD>
child_nodes r9<00> _simulate_duzLinuxSandbox._simulate_duasC<00><00><14>x<EFBFBD>x<EFBFBD><04><18><08> <0E><01><0F>#<23>d<EFBFBD>)<29>m<EFBFBD><13>A<EFBFBD>w<EFBFBD>%<25><1F>4<EFBFBD><01>7<EFBFBD>d<EFBFBD>?<3F><1F><08><11>Q<EFBFBD><06><01><15>a<EFBFBD><17>#<23>#<23>C<EFBFBD>(<28><11>Q<EFBFBD><06><01><1B>(<28>(<28><14>a<EFBFBD><17>1<><04><11>Q<EFBFBD><06><01><10>#<23>d<EFBFBD>)<29>m<EFBFBD><14><EFBFBD><EFBFBD>t<EFBFBD>$<24><04><13>t<EFBFBD>F<EFBFBD>|<7C>u<EFBFBD>,<2C><19>$<24><16>:<3A>;<3B> ;<3B><1E>a<EFBFBD>(<28><08><11><05><17>8<EFBFBD>8<EFBFBD>J<EFBFBD><02>+<2B><08><1D> =<3D>E<EFBFBD> <20>K<EFBFBD>K<EFBFBD><03>,<2C>-<2D>Q<EFBFBD>u<EFBFBD>g<EFBFBD>6<>J<EFBFBD><1D><1F><1F><1A>4<>J<EFBFBD><19><15><18><1C><1C>j<EFBFBD><16>&8<>!<21><<3C><<3C><05>  =<3D> <18><17><03>D<EFBFBD>6<EFBFBD>"<22>"r;<00>
input_textc<00><><00>|j<00>jd<01>}d|v}d|v}|r t|d<04>|<04><05>}n|j|<04><06>dj |<03>S#Y<00>xYw)u模拟 sort 命令rjr rc<00>:<00>t|j<00>d<00>S)Nr)<02>floatrK)<01>xs r9<00><lambda>z-LinuxSandbox._simulate_sort.<locals>.<lambda><3E>s<00><00>E<EFBFBD>!<21>'<27>'<27>)<29>A<EFBFBD>,<2C>4G<34>r;)rw<00>reverse)r<>)<05>striprK<00>sortedr&rJ)r8r=r<>rxr<><00>numerics r9<00>_simulate_sortzLinuxSandbox._simulate_sort<72>sn<00><00><1A> <20> <20>"<22>(<28>(<28><14>.<2E><05><16>$<24>,<2C><07><16>$<24>,<2C><07> <12> <15><1E>u<EFBFBD>*G<>QX<51>Y<><05> <12>J<EFBFBD>J<EFBFBD>w<EFBFBD>J<EFBFBD> '<27><13>y<EFBFBD>y<EFBFBD><15><1F><1F><>  <15><14>s <00>A<00>A"c<00>:<00>|r|jd<01>dznd}|rt|j<00><00>nd}t|<02>}|r<>|ddvr{|d}|j|<06>}|j |<07>}|rR|ddk(rJ|j dd <09>} | jd<01>dz}t| j<00><00>}t| <09>}|r|dj d
<EFBFBD>r|dnd }
|
d k(r t|<03>S|
d k(r t|<04>S|
d k(r t|<05>Sd|<03>d|<04>d|<05><00>S)u模拟 wc 命令rjrhrrIr(r r rrAr@rr)r*rTz )<08>countrlrKrNrRrQrC<00>str) r8r=r<>rx<00>words<64>charsrrWrVr<00>flags r9<00> _simulate_wczLinuxSandbox._simulate_wc<77>s'<00><00>.8<EFBFBD>
<EFBFBD> <20> <20><14>&<26><11>*<2A>a<EFBFBD><05>+5<><03>J<EFBFBD>$<24>$<24>&<26>'<27>1<EFBFBD><05><13>J<EFBFBD><0F><05> <10>D<EFBFBD><12>H<EFBFBD>$6<>6<><17><02>8<EFBFBD>D<EFBFBD><1B>(<28>(<28><14>.<2E>H<EFBFBD><17>?<3F>?<3F>8<EFBFBD>,<2C>D<EFBFBD><13><04>V<EFBFBD> <0C><06>.<2E><1E>(<28>(<28>9<EFBFBD>b<EFBFBD>1<><07><1F> <0A> <0A>d<EFBFBD>+<2B>a<EFBFBD>/<2F><05><1B>G<EFBFBD>M<EFBFBD>M<EFBFBD>O<EFBFBD>,<2C><05><1B>G<EFBFBD> <0C><05><1E>4<EFBFBD><01>7<EFBFBD>#5<>#5<>c<EFBFBD>#:<3A>t<EFBFBD>A<EFBFBD>w<EFBFBD><02><04> <0F>4<EFBFBD><<3C><16>u<EFBFBD>:<3A> <1D> <11>T<EFBFBD>\<5C><16>u<EFBFBD>:<3A> <1D> <11>T<EFBFBD>\<5C><16>u<EFBFBD>:<3A> <1D><17><05>w<EFBFBD>c<EFBFBD>%<25><17><03>E<EFBFBD>7<EFBFBD>3<> 3r;c<00>`<00>|sy|j|d<00>}|jd<03>syd|<02>d<06>S)u模拟 mkdir -pzmkdir: missing operandrz/sandboxz4mkdir: permission denied: only sandbox paths allowedzmkdir: created directory 'z ' (simulated))rNrC<00>r8r=rs r9<00>_simulate_mkdirzLinuxSandbox._simulate_mkdir<69>s:<00><00><13>+<2B><13> <20> <20><14>a<EFBFBD><17>)<29><04><13><EFBFBD><EFBFBD>z<EFBFBD>*<2A>I<>+<2B>D<EFBFBD>6<EFBFBD><1D>?<3F>?r;c<00><<00>|sy|j|d<00>}d|<02>d<04>S)u 模拟 touchztouch: missing file operandrztouch: cannot touch 'z': Read-only file system)rNr<>s r9<00>_simulate_touchzLinuxSandbox._simulate_touch<63>s,<00><00><13>0<><13> <20> <20><14>a<EFBFBD><17>)<29><04>&<26>t<EFBFBD>f<EFBFBD>,D<>E<>Er;c<00><><00>t|<01>dkry|j|d<00>}|d}|j|<02>s d|d<00>d<06>Sd|<02>d|<03>d <09>S)
u 模拟 cpr|zcp: missing file operandrrIzcp: cannot stat 'rUzcp: copied (simulated) '<27>' → '<27>')rlrNrR)r8r=<00>src<72>dsts r9<00> _simulate_cpzLinuxSandbox._simulate_cp<63>sb<00><00> <0E>t<EFBFBD>9<EFBFBD>q<EFBFBD>=<3D>-<2D><12><1F><1F><04>Q<EFBFBD><07>(<28><03><12>2<EFBFBD>h<EFBFBD><03><13><EFBFBD><EFBFBD>s<EFBFBD>#<23>&<26>t<EFBFBD>A<EFBFBD>w<EFBFBD>i<EFBFBD>/K<>L<> L<>)<29>#<23><15>g<EFBFBD>c<EFBFBD>U<EFBFBD>!<21><<3C><r;c<00>><00>t|<01>dkryd|d<00>d|d<00>d<07>S)u 模拟 mvr|zmv: missing file operandzmv: moved (simulated) 'rr<>rhr<>)rlres r9<00> _simulate_mvzLinuxSandbox._simulate_mv<6D>s-<00><00> <0E>t<EFBFBD>9<EFBFBD>q<EFBFBD>=<3D>-<2D>(<28><14>a<EFBFBD><17> <09><17><14>a<EFBFBD><17> <09><11>C<>Cr;c <00><><00>|sy|j|d<00>}|j|<02>}|sd|<02>d<04>Sd|<02>dt|jdd<08><00><00>d |d
d k(rd nd <0A>d|d<00>d|d
d k(rd<08>d<12> Sd<11>d<12> S)u 模拟 statzstat: missing operandrzstat: cannot stat 'rUz File: z
Size: rrAz' Blocks: 1 IO Block: 4096 r r<00> directoryz regular filez
Access: (r
z/0<>0z<30>44) uid=1000 gid=1000
Access: 2026-03-04 00:00:00.000000000
Modify: 2026-03-04 00:00:00.000000000
Change: 2026-03-04 00:00:00.000000000
Birth: -)rNrRrlrQ)r8r=rrVs r9<00>_simulate_statzLinuxSandbox._simulate_stat<61>s<><00><00><13>*<2A><13> <20> <20><14>a<EFBFBD><17>)<29><04><13><EFBFBD><EFBFBD>t<EFBFBD>$<24><04><13>(<28><14><06>.J<>K<> K<><1B>D<EFBFBD>6<EFBFBD>" <09> <0C>T<EFBFBD>X<EFBFBD>X<EFBFBD>i<EFBFBD><12> $<24> %<25>&<26>&M<>]a<>bh<62>]i<>mr<6D>]r<>k<EFBFBD>yG<02>NH<02>H
<EFBFBD>
<0E>v<EFBFBD>,<2C><1E>r<EFBFBD><04>V<EFBFBD> <0C>e<EFBFBD> 3<>"<22>><3E>?
<EFBFBD> <0A> <0A>9<<3C>><3E>?
<EFBFBD> <0A> r;<00>cmdc<00>&<00><01><00>j<00><00><01>sdddd<03>S|jj<00><01><00>j<00>}|d}|dd}t <00>fd<07>dD<00><00>rdd d
d<03>S|j ||<04>\}}|sdd |d<03>Sd} |d k(r|j |<04>}<07>n<>|d k(r#|j|<04>}|r|n |j}<07>n<>|d k(r|j<00>}<07>n<>|dk(r|j|<04>}<07>nz|dk(r|j|<04>}<07>nb|dk(r|j|<04>}<07>nJ|dk(r|j|<04>}<07>n2|dk(r|j|<04>}<07>n|dk(r|j|d<01>}<07>n|dk(r|j!|<04>}n<>|dk(r|j#|<04>}n<>|dk(r|j%|<04>}n<>|dk(r|j'|<04>}n<>|dk(r|j)|<04>}n<>|dk(rd}n<>|dk(re|r1|dj+d<1C>rt-|dj/d<1C><00>nd} dj1d<1F>t3|j| d<00>D<00><00>}n|d k(r|j5|<04>}n|<03>d!<21>}|dd#d<03>S#t6$r}
d"|
<EFBFBD><00>}Yd}
~
<EFBFBD>d}
~
wwxYw)$u-执行命令,返回结果 & 社交化反馈rAT)<03>output<75>success<73>messagerrhNc3<00>&<00>K<00>|]}|<01>v<00><01><00>
y<00>w)N<>)<03>.0r<EFBFBD>r<>s <20>r9<00> <genexpr>z'LinuxSandbox.execute.<locals>.<genexpr><3E>s<00><><00><><00>Q<>A<EFBFBD>q<EFBFBD>C<EFBFBD>x<EFBFBD>Q<>s<00>)zrm -rf<72>sudoz chmod 777<37>wget<65>curlFuX❌ 拒绝执行危险命令这是沙盒环境为安全起见禁止危险指令。rrrrrrr"r%r&r'r+r,r-r.r/<00> sandbox_userr0r<00>rjc3<00>8K<00>|]\}}d|dz<00>d|<02><00><04><01><00>y<02>w)rTrhNr<4E>)r<>rr<00>hs r9r<>z'LinuxSandbox.execute.<locals>.<genexpr>-s$<00><00><><00>"\<5C>t<EFBFBD>q<EFBFBD>!<21>R<EFBFBD><01>!<21><03>u<EFBFBD>B<EFBFBD>q<EFBFBD>c<EFBFBD>?<3F>"\<5C>s<00>r1z": command not found (sandbox mode)zError: u✅ 命令执行成功)r<>r0rmrK<00>anyrFrXr`r5rbrfr]rzr<>r<>r<>r<>r<>r<>r<>r<>rC<00>int<6E>lstriprJ<00> enumerater<65><00> Exception) r8r<><00>partsr<r=<00>allowed<65>errr<72><00>msg<73>n<>es ` r9<00>executezLinuxSandbox.execute<74>s<><00><><00><11>i<EFBFBD>i<EFBFBD>k<EFBFBD><03><12> <20>T<EFBFBD>b<EFBFBD>A<> A<> <0A> <0C> <0C><1B><1B>C<EFBFBD> <20><14> <09> <09> <0B><05><18><11>8<EFBFBD><08><14>Q<EFBFBD>R<EFBFBD>y<EFBFBD><04> <0F>Q<>!P<>Q<> Q<><1C> <20>u<><0E> <0E><1C>-<2D>-<2D>h<EFBFBD><04>=<3D> <0C><07><13><16> <20>U<EFBFBD>s<EFBFBD>C<> C<><14><06>) #<23><17>4<EFBFBD><1F><1D>*<2A>*<2A>4<EFBFBD>0<><06><19>T<EFBFBD>!<21><1A>'<27>'<27><04>-<2D><03> #<23><13><14><18><18><06><19>U<EFBFBD>"<22><1D>+<2B>+<2B>-<2D><06><19>V<EFBFBD>#<23><1D>,<2C>,<2C>T<EFBFBD>2<><06><19>U<EFBFBD>"<22><1D>+<2B>+<2B>D<EFBFBD>1<><06><19>V<EFBFBD>#<23><1D>,<2C>,<2C>T<EFBFBD>2<><06><19>V<EFBFBD>#<23><1D>,<2C>,<2C>T<EFBFBD>2<><06><19>T<EFBFBD>!<21><1D>*<2A>*<2A>4<EFBFBD>0<><06><19>V<EFBFBD>#<23><1D>,<2C>,<2C>T<EFBFBD>2<EFBFBD>6<><06><19>T<EFBFBD>!<21><1D>*<2A>*<2A>4<EFBFBD>0<><06><19>W<EFBFBD>$<24><1D>-<2D>-<2D>d<EFBFBD>3<><06><19>W<EFBFBD>$<24><1D>-<2D>-<2D>d<EFBFBD>3<><06><19>T<EFBFBD>!<21><1D>*<2A>*<2A>4<EFBFBD>0<><06><19>T<EFBFBD>!<21><1D>*<2A>*<2A>4<EFBFBD>0<><06><19>X<EFBFBD>%<25>'<27><06><19>Y<EFBFBD>&<26>15<31>$<24>q<EFBFBD>'<27>:L<>:L<>T<EFBFBD>:R<>C<EFBFBD><04>Q<EFBFBD><07><0E><0E>t<EFBFBD>,<2C>-<2D>XY<58><01><1D><19><19>"\<5C>y<EFBFBD><14><1C><1C>WX<57>VX<56>VY<56>IZ<49>?[<5B>"\<5C>\<5C><06><19>V<EFBFBD>#<23><1D>,<2C>,<2C>T<EFBFBD>2<><06>$<24>:<3A>%G<>H<><06>
!<21>T<EFBFBD>>V<>W<>W<><57><19> #<23><1E>q<EFBFBD>c<EFBFBD>]<5D>F<EFBFBD><46> #<23>s<00> G)I8<00>8 J<03>J <03> J)rA)<1C>__name__<5F>
__module__<EFBFBD> __qualname__r:r<><00>list<73>tuple<6C>boolrFrN<00>dictrRrXr]r`rbrfrzr<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r;r9r3r3<00>s<><00><00>!<21>
<18>#<23> <18>T<EFBFBD> <18>e<EFBFBD>D<EFBFBD>#<23>I<EFBFBD>>N<> <18> 0<><13> 0<><13> 0<>$<24>s<EFBFBD>$<24>t<EFBFBD>d<EFBFBD>{<7B>$<24>3<><14>3<>#<23>3<>.'<27>$<24>'<27>3<EFBFBD>'<27> <12><14><12>#<23><12> <18>s<EFBFBD><18><1E>4<EFBFBD><1E>C<EFBFBD><1E>75<>4<EFBFBD>75<>C<EFBFBD>75<>r*5<>4<EFBFBD>*5<>C<EFBFBD>*5<>X #<23><14> #<23>#<23> #<23>D <20>4<EFBFBD> <20>S<EFBFBD> <20>S<EFBFBD> <20> 4<><14>4<>3<EFBFBD>4<><03>4<>6
@<01>D<EFBFBD>
@<01>S<EFBFBD>
@<01>F<01>D<EFBFBD>F<01>S<EFBFBD>F<01> =<3D><14> =<3D>#<23> =<3D>D<01><14>D<01>#<23>D<01> <0A>4<EFBFBD> <0A>C<EFBFBD> <0A>,IX<01>3<EFBFBD>IX<01>4<EFBFBD>IXr;r3<00>__main__z=== Linux Sandbox Test ===zcat /users/alice.txtzgrep Linux /users/*zfind /projects -name '*.py'zdu -sh /projectszrm -rf /) <09>__doc__rnrPrBr3r<><00>sb<73>printr<74>r<>r;r9<00><module>r<>s<00><01><04>
<EFBFBD>
e<02><07><15><15>A<>
<06>e<02>  <0A><15><15>7<><06> e<02><17><16><15>1<><06>e<02> <15><16><15>:<3A><06>!e<02>*<15><15><15>!<21><<3C>0<><06>+e<02>4 <20><16><15>E<>"<06>5e<02>> <20><16><15>/<2F>"<06>?e<02>H<10><15><15><1A>I<EFBFBD>&<26><06>Ie<02>R<14><15><15>!<21>;<3B>/<2F><06>Se<02>\<1F><16><15>B<>!<06>]e<02>f<1E><16><15>6<> <06>ge<02>p<18><15><15>6<><06>qe<02>z<1F><16><15>f<>!<06>{e<02>D!<21><16><15>Y<>#<06>Ee<02>N!<21><16><15>=<3D>#<06>Oe<02>X <0C><15><15>!<21>;<3B>/<2F><06>Ye<02>b<17><16><15>A<02><06>ce<02>n<17><15>f<><06> <16><15>"<22>O<EFBFBD><06> <17><15>D<02>"<06>Ae<02>
<EFBFBD>V<02><08>5<><14> <06><02>
 <09>6<EFBFBD>4<EFBFBD>.<2E> <02> 
<EFBFBD>2<EFBFBD> <02> <0B>V<EFBFBD>T<EFBFBD>N<EFBFBD><02>
<EFBFBD>F<EFBFBD>D<EFBFBD>><3E><02> <0B>t<EFBFBD>f<EFBFBD>d<EFBFBD> +<2B><02> <0B>t<EFBFBD>f<EFBFBD>d<EFBFBD> +<2B><02> <0B>(<28>T<EFBFBD>4<EFBFBD> H<><02> <0B>,<2C><14> <06><02>  <09>T<EFBFBD>4<EFBFBD>L<EFBFBD>$<24>
/<2F>!<02>" <0B>W<EFBFBD>(<28> )<29>#<02>$ <09>&<26><04>
5<EFBFBD>%<02>& <0C>f<EFBFBD>d<EFBFBD>^<5E>'<02>( <0C>f<EFBFBD>d<EFBFBD>^<5E>)<02>* <09>6<EFBFBD>4<EFBFBD>.<2E>+<02>, <09>6<EFBFBD>4<EFBFBD>.<2E>-<02>. <0A>b<EFBFBD>/<02>0<18>$<24><16> <20> <13>T<EFBFBD>N<EFBFBD>3<02> <0C>>]X<01>]X<01>F  <0C>z<EFBFBD><19> <15><1E>B<EFBFBD> <09>
&<26>'<27> <09>"<22>*<2A>*<2A>T<EFBFBD>
<1A><1B> <09>"<22>*<2A>*<2A>U<EFBFBD>
<1B><1C> <09>"<22>*<2A>*<2A>+<2B>
,<2C>-<2D> <09>"<22>*<2A>*<2A>*<2A>
+<2B>,<2C> <09>"<22>*<2A>*<2A>2<>
3<EFBFBD>4<> <09>"<22>*<2A>*<2A>'<27>
(<28>)<29> <09>"<22>*<2A>*<2A>Z<EFBFBD>
<20>!<21>r;