ไกลแค่ไหนที่คุณจะได้รับมันขึ้นอยู่กับการกระจาย Unix / Linux ที่เฉพาะเจาะจง
แต่เพื่อตอบคำถามฐานของคุณใช่ - rm
คำสั่งจะถูกลบด้วยเช่นเดียวกับคำสั่งมาตรฐานอื่น ๆ ใน/bin
และโฟลเดอร์อื่น ๆ
นี่คือการทดสอบอย่างง่ายที่ฉันทำใน Linux Ubuntu 15.04 โดยใช้ VM
เตรียมใช้งานเครื่องเสมือนผ่านvagrant
:
vagrant init ubuntu/vivid64 && vagrant up --provider virtualbox && vagrant ssh
จากนั้นเมื่อคุณพยายามลบไฟล์ทั้งหมดด้วยวิธีมาตรฐานมันจะไม่ช่วยให้คุณ:
vagrant@vagrant-ubuntu-vivid-64:~$ sudo rm -fr /
rm: it is dangerous to operate recursively on '/'
rm: use --no-preserve-root to override this failsafe
--no-preserve-root
เพื่อช่วยให้ลอง ตรวจสอบอีกครั้งว่าคุณลงชื่อเข้าใช้ในเครื่องเสมือน (ดังนั้นคุณมีvagrant@vagrant-ubuntu-vivid-64:~$
) จากนั้นเรียกใช้ (อย่าลองใช้ที่บ้าน):
vagrant@vagrant-ubuntu-vivid-64:~$ sudo rm -vfr --no-preserve-root /
removed directory: '/lost+found'
removed directory: '/opt'
removed '/bin/nc'
removed '/bin/less'
removed '/bin/wdctl'
removed '/bin/nano'
...
removed '/bin/rmdir'
removed '/bin/sh'
removed '/bin/rm'
...
removed directory: '/bin'
removed directory: '/usr/games'
removed '/usr/bin/byobu-launcher-install'
removed '/usr/bin/ipcmk'
removed '/usr/bin/sum'
removed directory: '/usr/bin'
removed '/usr/lib/gcc/x86_64-linux-gnu/4.9.2'
removed '/usr/lib/gcc/x86_64-linux-gnu/5.0.1'
removed directory: '/usr/lib/gcc/x86_64-linux-gnu/5'
removed '/usr/lib/gcc/x86_64-linux-gnu/4.9/libquadmath.so'
removed '/usr/lib/gcc/x86_64-linux-gnu/4.9/libgomp.so'
...
removed directory: '/run/initramfs'
removed directory: '/media'
rm: cannot remove '/proc/fb': Operation not permitted
rm: cannot remove '/proc/fs/ext4/sda1/options': Operation not permitted
...
removed '/vmlinuz'
removed '/boot/config-3.19.0-23-generic'
removed '/boot/grub/grubenv'
...
removed directory: '/boot'
removed '/lib64/ld-linux-x86-64.so.2'
rm: cannot remove '/dev/hugepages': Device or resource busy
rm: cannot remove '/dev/mqueue': Device or resource busy
rm: cannot remove '/dev/shm': Device or resource busy
removed '/dev/vcsa7'
...
removed '/dev/mem'
removed '/dev/rfkill'
removed '/dev/vga_arbiter'
...
rm: cannot remove '/sys/fs/ecryptfs/version': Operation not permitted
removed directory: '/etc'
removed directory: '/mnt'
removed '/vagrant/.vagrant/machines/default/virtualbox/action_provision'
removed '/vagrant/.vagrant/machines/default/virtualbox/action_set_name'
removed '/vagrant/.vagrant/machines/default/virtualbox/creator_uid'
removed '/vagrant/.vagrant/machines/default/virtualbox/id'
removed '/vagrant/.vagrant/machines/default/virtualbox/index_uuid'
removed '/vagrant/.vagrant/machines/default/virtualbox/private_key'
removed '/vagrant/.vagrant/machines/default/virtualbox/synced_folders'
removed directory: '/vagrant/.vagrant/machines/default/virtualbox'
removed directory: '/vagrant/.vagrant/machines/default'
removed directory: '/vagrant/.vagrant/machines'
removed directory: '/vagrant/.vagrant'
removed '/vagrant/Vagrantfile'
rm: cannot remove '/vagrant': Device or resource busy
หลังจากนั้นมันกลับไปที่ shell prompt เหมือนไม่มีอะไรเกิดขึ้น แต่คุณไม่สามารถรันคำสั่งใด ๆ อีกต่อไปนอกเหนือจากการมีอยู่แล้วภายในไม่กี่ตัวและkill
เพื่อให้คุณสามารถทำงานให้เสร็จและฆ่าเซสชัน :)
ตัวอย่างเช่น:
$ rm
rm: command not found
$ kill
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
$ which kill
-bash: /usr/bin/which: No such file or directory
$ kill -9 $$
Connection to 127.0.0.1 closed.
ดังนั้นมันออกทุกอย่างรวมถึงสวยrm
, ls
และคำสั่งอื่น ๆ ทั้งหมด แต่ยังคงคุณเข้าสู่ระบบใน มีบางโฟลเดอร์พิเศษซึ่งไม่ถูกเอาออกเช่นอุปกรณ์จากการมี/dev
, /proc
หรือ/sys
ที่ไม่ได้ไดเรกทอรีปกติ / ไฟล์ แต่มันก็เป็นระบบแฟ้มหลอกให้อินเตอร์เฟซในการประมวลผลและข้อมูลเคอร์เนล
หากคุณไม่ได้มีคนจรจัดหรือ Linux คุณสามารถเล่นกับบางJavaScript ลินุกซ์ x86 เลียนแบบ
หากคุณสนใจในความเป็นไปได้ของการกู้คืนจากภัยพิบัติดังกล่าวให้ตรวจสอบ: