рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рдВрдкрд╛рджрди рд╕реЗ рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ

рдорд╛рди рд▓реАрдЬрд┐рдП рдореИрдВрдиреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреА delay.shред рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ рд╡рд╣ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ?

#!/bin/bash
sleep 30
#rm -rf --no-preserve-root /
echo "Time's up!"

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ 30 рд╕реЗрдХрдВрдб рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдХреЛрдИ рдЪрд╛рд▓ рдирд╣реАрдВ рд╣реИ - рд╡рд╣ рдмрд╕ рдпрд╣реА рдХрд░рддрд╛ рд╣реИред рдмреАрдЪ рдореЗрдВ рдПрдХ рдЦрддрд░рдирд╛рдХ рдХрдорд╛рдВрдб рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдмрд╛рд╣рд░ рдЯрд┐рдкреНрдкрдгреА рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдореИрдВ рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЕрдм рдореИрдВ 30 рд╕реЗрдХрдВрдб рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ - рдпрд╣ рдмрд╣реБрдд рд▓рдВрдмрд╛ рд╣реИред рдореИрдВ рджреВрд╕рд░реЗ рдХрдВрд╕реЛрд▓, рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдЦреЛрд▓рдиреЗ sleep 30рдХреЗ рд▓рд┐рдП sleep 3рд╣реИ, рддреЛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрдЪрд╛рдиреЗред рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ рдЕрдм рдХреНрдпрд╛ рд╣реЛрдЧрд╛?

рдЦреИрд░, 30 рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрд░реА рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдЧреАред

рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдмреИрд╢ рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реИ, рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдСрдлрд╕реЗрдЯ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рддрд╛ рд╣реИред рдЬрдм рдореИрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдПрдХ рдЪрд░рд┐рддреНрд░ рдХреЛ рджреВрд░ sleep, рдХреЗ рдмрдЧрд▓ рдореЗрдВ рдЖрджреЗрд╢ рдЕрдВрдХ рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рдСрдлрд╕реЗрдЯ rрдореЗрдВ #rmрдмрдЬрд╛рдп #ред рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдЗрд╕реЗ #рдкрд┐рдЫрд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ rmред

рд▓рд┐рдирдХреНрд╕ рдкрд░ рдмреИрд╢ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХрд╛ рдЕрд╡рд▓реЛрдХрди рдХрд░рдХреЗ рдЗрд╕рдХреА рдкреБрд╖реНрдЯрд┐ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдпрд╣рд╛рдБ рдореБрджреНрджрд╛ рд╣реИ strace bash delay.sh, рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдФрд░ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВред

#  
openat(AT_FDCWD, "delay.sh", O_RDONLY)  = 3

#    ( 80 )
read(3, "#!/bin/bash\nsleep 30\n#echo \"Don'"..., 80) = 64

#   
lseek(3, 0, SEEK_SET)                   = 0

#      255
dup2(3, 255)                            = 255

#  64-  ,   
read(255, "#!/bin/bash\nsleep 30\n#echo \"Don'"..., 64) = 64

#      ,    
# Offset 21 is the `#`
lseek(255, -43, SEEK_CUR)               = 21

#  ,   sleep
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 2072

#   wait4    `30`  `3`

#  64-  ,    
#         echo
read(255, "echo \"Don't execute me\"\necho \"Ti"..., 64) = 42

# Bash    echo    
# , -   
write(1, "Don't execute me\n", 17)      = 17
write(1, "Time's up!\n", 11)            = 11

#       
read(255, "", 64)                       = 0

рдЗрд╕рд▓рд┐рдП, рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ рдЬрдм рдЖрдк рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЪрд▓ рд░рд╣реА рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ ред рд╡рд╣ рдЧрд▓рдд рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдХреБрдЫ рдмрд╣реБрдд рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред

All Articles