Ini adalah Pertanyaan Canonical tentang Izin File dan Mengapa 777 "destruktif".
Saya tidak bertanya bagaimana memperbaiki masalah ini, karena ada banyak referensi yang sudah ada di Server Fault (instal ulang OS). Mengapa itu melakukan sesuatu yang merusak sama sekali?
Jika Anda pernah menjalankan perintah ini, Anda akan segera menghancurkan sistem operasi Anda. Saya tidak jelas mengapa menghapus pembatasan berdampak pada proses yang ada. Sebagai contoh, jika saya tidak memiliki akses baca ke sesuatu dan setelah kesalahan ketik cepat di terminal tiba-tiba saya sekarang memiliki akses dengan baik ... mengapa itu menyebabkan Linux rusak?
linux
permissions
chmod
samwise
sumber
sumber
Jawaban:
Pertama-tama, istilah kecil nitpick:
chmod
tidak menghapus izin. Ini MENGUBAH mereka.Sekarang daging masalah - Mode ini
777
berarti "Siapa pun dapat membaca, menulis atau mengeksekusi file ini" - Anda telah memberikan izin bagi siapa saja untuk melakukan (secara efektif) apa pun yang mereka inginkan.Sekarang, mengapa ini buruk?
login
program baru yang memungkinkannya setiap saat).rm -r /
dan semuanya berakhir. OS diberitahu untuk membiarkan mereka melakukan apa pun yang mereka inginkan!sudo
,,sendmail
dan sejumlah orang lain tidak akan memulai lagi. Mereka akan memeriksa izin file utama, melihat mereka tidak seperti yang seharusnya, dan menendang kembali pesan kesalahan.Demikian pula
ssh
akan rusak parah (file kunci harus memiliki izin khusus, kalau tidak mereka "tidak aman" dan secara default SSH akan menolak untuk menggunakannya.)Mode
777
sebenarnya . Di antara hal-hal dalam digit terdepan itu adalah bit dan . Sebagian besar program yang setuid / setgid memiliki set bit itu karena harus dijalankan dengan hak istimewa tertentu. Mereka rusak sekarang.0
777
setuid
setgid
/tmp
dan/var/tmp
Hal lain dalam digit oktal utama yang mendapat nol adalahsticky bit
- Bahwa yang melindungi file di/tmp
(dan/var/tmp
) dari dihapus oleh orang-orang yang tidak memilikinya.Ada (sayangnya) banyak skrip berperilaku buruk di luar sana yang "membersihkan" dengan melakukan
rm -r /tmp/*
, dan tanpa bit lengket yang ditetapkan pada/tmp
Anda dapat mencium semua file dalam direktori selamat tinggal.Kehilangan file awal dapat benar-benar mengganggu beberapa program yang ditulis dengan buruk ...
/dev
/proc
dan sistem file serupa.Ini lebih merupakan masalah pada sistem Unix lama di mana sistem
/dev
file nyata, dan hal-hal yang ada di dalamnya adalah file khusus yang dibuatmknod
, karena perubahan izin akan dipertahankan di seluruh reboot, tetapi pada sistem apa pun mengubah izin perangkat Anda dapat menyebabkan masalah besar, dari risiko keamanan yang jelas (semua orang dapat membaca setiap TTY) hingga potensi penyebab panik kernel yang kurang jelas.Credit to @Tonny for pointing out this possibility
Credit to @Tonny for pointing out this possibility
. Banyak orang memiliki variabel lingkungan
.
merekaPATH
(Anda tidak seharusnya!) - Ini dapat menyebabkan kejutan yang tidak menyenangkan karena sekarang siapa pun dapat menjatuhkan file yang dinamai seperti perintah (katakanmake
atauls
, dan mencoba membuat Anda menjalankan kode berbahaya mereka.Credit to @RichHomolka for pointing out this possibility
chmod
akan mengatur ulang Daftar Kontrol Akses (ACL)Ini berarti Anda mungkin harus membuat kembali semua ACL Anda selain memperbaiki izin di mana-mana (dan merupakan contoh aktual dari perintah yang merusak).
Credit to @JamesYoungman for pointing out this possibility
Akankah bagian-bagian dari sistem yang sudah berjalan terus berjalan? Mungkin, setidaknya untuk sementara waktu.
Tetapi lain kali Anda perlu meluncurkan program, atau memulai kembali layanan, atau surga melarang REBOOT kotak Anda berada dalam dunia yang terluka karena # 2 dan # 3 di atas akan memundurkan kepala jelek mereka.
sumber
/tmp
akan diperbaiki setelah reboot. Meskipun semuanya banyak hal lainnya tampaknya rusak. Setidaknya di VM saya baru saja mengujinya muncul reboot memperbaiki/tmp
izin. Pasti ada sesuatu di skrip startup di suatu tempat.tmpfs
biasanya memperbaiki sendiri, yang memiliki / tmp pada disk mungkin (tergantung pada skrip startup mereka)find / -perms -4000 -type f
danfind / -perms -2000 -type f
lihat berbagai binari yang bergantung pada flag-flag ini.everyone
didefinisikan sebagai penyatuan set termasuk pengguna yang memiliki file tersebut, pengguna dalam kelompok yang memiliki file, dan pengguna yang tidak memenuhi salah satu dari kriteria tersebut (secara harfiah tiga digit izin oktal:User
,Group
, danOther
). Dengan kata lain setiap pengguna dengan akses ke sistem . ("Akses" dalam konteks ini bisa berupa akun shell, yang biasanya saya atasi, tetapi juga mencakup akses melalui formulir web / CGI yang menulis data ke disk:www
Pengguna sekarang dapat menulis ke file apa pun di sistem , yang berarti pengunjung acak juga bisa.)Satu hal utama adalah bahwa ada banyak alat seperti ssh / sudo yang memeriksa izin sistem file untuk file konfigurasi kunci. Jika izin salah, alat ini dirancang untuk gagal, karena ini akan menunjukkan masalah keamanan yang serius. Pada sistem pengujian Debian saya dan mungkin pada orang lain, kemampuan untuk masuk gagal, mungkin karena biner masuk atau sesuatu dalam PAM memiliki pemeriksaan izin.
Jadi sebenarnya bukan sistem yang dihancurkan - melainkan banyak alat yang dirancang untuk segera gagal saat izin salah.
Jika Anda me-reboot sistem setelah melakukan
chmod 777 -R /
itu akan boot, dan Anda dapat memulai proses yang tidak memiliki pemeriksaan izin eksplisit. Jadi sistem ini tidak benar-benar mati, hanya desain yang agak tidak dapat digunakan .sumber