Bagaimana mencegah 'sudo rm -rf /'

10

Beberapa kali saya tidak sengaja menjalankan perintah sudo rm -rf /.

Apakah ada cara bagaimana mencegah saya menjalankan perintah ini? Sebagai contoh, bisakah saya menonaktifkannya menggunakan file sudoers?

iProgram
sumber
2
Bagaimana Anda secara tidak sengaja mengetik perintah ini dan kemudian menjalankannya ??
fnord_ix
Jika saya mengetikkan perintah seperti ini. sudo rm -rf / Applications/chess.appPerhatikan jarak antara / dan A. Begitulah
iProgram

Jawaban:

14

Anda dapat menambahkan garis seperti

%admin ALL = !/bin/rm -rf /

ke sudoersfile Anda untuk mencegah pelaksanaan perintah dengan opsi spesifik.

Atau, jika Anda ingin mengecualikan beberapa perintah, Anda dapat bekerja dengan alias alias

Cmnd_Alias DANGEROUS_CMNDS=/bin/rm -rf /, /bin/rm -fr /
%admin ALL=!DANGEROUS_CMNDS

Anda juga dapat mencoba memainkannya dengan aman menggunakan

Cmnd_Alias DANGEROUS_CMNDS=/bin/rm -rf /, /bin/rm -fr /, /bin/rm / *, /bin/rm * /, /bin/rm -rf / *, /bin/rm -rf * /, /bin/rm -fr / *, /bin/rm -fr* /
%admin ALL=!DANGEROUS_CMNDS

tetapi mungkin masih ada cara lain Anda bisa menembak diri sendiri dengan kaki rmjadi berhati-hatilah .

Tetapi perlu diingat bahwa semua pencocokan dilakukan pada string penuh dari perintah, jadi sudo rm -rf /Volumesmasih akan bekerja (seperti yang akan terjadi cd /; sudo rm -rf .).

PS: Dengan segala cara, gunakan sudo visudountuk mengedit sudoersfile dan TIDAK PERNAH mengeditnya secara langsung

PPS: Saya jelas tidak menguji ini dengan rm(hanya dengan /bin/echosebaliknya)

nohillside
sumber
Komentar bukan untuk diskusi panjang; percakapan ini telah dipindahkan ke obrolan .
bmike
6

Saya tahu Anda mengucapkan pertanyaan dengan cara yang membuat saya curiga Anda tidak ingin mendengar jawaban ini, tetapi Anda benar-benar harus menghapus diri Anda dari file sudoers jika Anda cenderung membuat kesalahan yang sama berulang-ulang.

Masalah yang mendasarinya adalah Anda belum alias rmpindah ke tempat sampah (yang jelas bagaimana Anda menggunakannya saat ini dan di masa lalu) atau dipaksa rm -runtuk dipaksa masuk ke tempat sampah.rm -ri

alias rm='/bin/rm -i'

Anda selalu dapat menyiasati alias dengan command rm -rf whateverbegitu Anda melatih pikiran Anda ketika mengukur dua kali, potong sekali diperlukan untuk rm -rfdigunakan.

bmike
sumber
Terima kasih atas tipnya. Saya sedang berpikir untuk membuat akun admin saya tersembunyi (untuk mengakses terminal saja) dan akun standar untuk penggunaan normal saja. Saya bisa membuat pembungkus untuk pindah ke tempat sampah juga. Terima kasih atas tipnya. Saya pikir mencegah sudo mungkin langkah yang lebih aman. Saya masih akan memastikan saya dapat mengaksesnya dengan masuk ke admin tersembunyi.
iProgram
Belum ditandai sebagai dijawab karena tidak menjawab di atas. Ini masih merupakan saran yang bagus
iProgram