Bahasa Melayu

Alat pembangun · Kalkulator Chmod

Mengapa chmod 777 ialah pembetulan yang salah untuk ralat yang ditolak kebenaran

· Mengapa ia penting

chmod unix kawalan akses

mod lebih luas ditunjukkan sebagai gambar rajah bit kebenaran Unix yang berbeza
Ilustrasi vektor ToolAcre asal

777 membuat ralat hilang dengan memberi semua orang segala-galanya. Siaran ini menerangkan perkara yang sebenarnya diberikan, cara ia dieksploitasi dan langkah diagnostik yang mencari masalah sebenar.

Ralat hilang, soalan tidak — chmod -R 777 pada direktori projek membetulkan borang muat naik dan tiada siapa yang tahu sebabnya

Ralat kebenaran yang hilang selepas 777 sahaja membuktikan bahawa akses luas telah mengubah hasilnya. Ia tidak mendedahkan bit mana yang penting atau sama ada bit mod menyebabkan kegagalan. Kalkulator memetakan 777 kepada rwxrwxrwx. Setiap kelas menerima baca, tulis dan laksana, yang makna praktikalnya berbeza antara fail biasa dan direktori.

Bukti berguna ialah perbezaan tahap bit daripada mod asal. Catatkan kelas mod itu tiga kali ganda, kemudian bandingkan 777 tanpa memanggil kejayaan sebagai diagnosis. Kalkulator tidak mengetahui identiti proses, pemilik, kumpulan, ACL atau dasar mandatori. Ia sahaja mendedahkan jumlah akses yang diberikan 777 sebelum penyelesaian menjadi tetapan kekal.

Apa yang 777 berikan dalam perkataan mudah — setiap pengguna pada sistem boleh membaca, mengubah suai dan (untuk direktori) membuat atau memadam apa-apa dalam pepohon

Mod 777 memberikan digit biasa maksimum kepada setiap kelas. Setiap 7 menggabungkan bacaan 4, tulis 2 dan laksanakan 1, menghasilkan rwxrwxrwx. Untuk fail, semua kelas boleh membaca, menukar dan menjalankan kandungan. Untuk direktori, mereka boleh menyenaraikan, mengubah suai entri dan memasukkan mengikut nama. Setiap kotak semak biasa dipilih.

"Semua orang lain" sepadan secara khusus dengan tiga kali ganda kebenaran terakhir, bukan akaun yang diketahui. Tanpa identiti dan pemilikan, kalkulator tidak dapat menentukan sama ada proses menggunakan pemilik, kumpulan atau lain-lain. Membandingkan 777 dengan 775 atau 755 masih mendedahkan setiap bit tulis yang dialih keluar dengan tepat, menggantikan penerangan yang samar-samar seperti "terbuka" dengan perbezaan peringkat kelas yang boleh dilihat.

Bagaimana kerosakan itu berlaku — proses web yang terjejas, skrip yang ditulis dengan teruk, atau konfigurasi penyuntingan penyewa lain atau menjatuhkan shell web

Kalkulator mendedahkan bit yang diberikan tetapi tidak dapat membuktikan laluan eksploit. Fail yang boleh ditulis dunia mencetuskan amaran bahawa mana-mana akaun boleh mengubah kandungannya. Direktori 777 tanpa sticky memberi amaran bahawa entri boleh dibuat atau dipadamkan. Akibat ini mengikut mod dan jenis sasaran, bukan bukti bahawa akaun lain wujud atau bertindak.

Asingkan kemungkinan akibat daripada peristiwa yang diperhatikan. Halaman ini tidak memeriksa proses, penyewa, skrip, konfigurasi atau akar web dan tidak melaksanakan apa-apa. Ia boleh menetapkan bahawa penulisan didayakan untuk kelas dan benderakan calon yang luas untuk semakan. Tuntutan tentang kompromi, fail yang disuntik atau penyalahgunaan sebenar memerlukan bukti persekitaran yang tidak pernah dikumpulkan oleh kalkulator.

Kalkulator mendedahkan bit yang diberikan tetapi tidak dapat menunjukkan laluan eksploit

Diagnosis identiti dan pemilikan berlaku di luar laluan ini. Bit biasa dikumpulkan sebagai pemilik, kumpulan dan lain-lain, tetapi kalkulator sahaja menerima integer mod dan jenis sasaran. Tanpa nama pemilik, keahlian kumpulan atau bukti kelayakan proses, ia tidak boleh memutuskan tiga kali ganda yang mengawal percubaan akses yang gagal, walaupun ia menyahkod setiap tiga kali ganda secara konsisten.

Inilah sebabnya mengapa melebarkan semua kelas adalah diagnostik yang lemah. Bit kumpulan yang disahkan mungkin penting apabila proses harus menggunakan akses kumpulan; pemilikan yang salah boleh menjadikan mana-mana mod mengedit ubat yang salah. Gunakan matriks untuk mengasingkan perubahan calon, kemudian sahkan identiti dan pemilikan secara luaran. Pelayar menyelesaikan perwakilan, bukan kebenaran.

Diagnosis identiti dan pemilikan mesti berlaku di luar laluan ini

Untuk direktori muat naik, bandingkan calon tanpa menetapkan satu. Mod 777 memberikan setiap direktori kelas membaca, menulis dan melaksanakan. Mod 775 mengalih keluar tulisan lain sambil mengekalkan tulisan kumpulan. Mod 755 rizab tulis untuk pemilik. Kalkulator memaparkan perbezaan ini, tetapi tidak dapat mengetahui kelas mana yang digunakan oleh pemuat naik atau operasi yang diperlukannya.

Catatkan perubahan bit terkecil antara calon. Daripada 777 hingga 775, sahaja tulisan lain hilang; daripada 775 hingga 755, tulisan kumpulan juga hilang. Direktori menulis kawalan mencipta, menamakan semula dan memadam entri, manakala melaksanakan kawalan entri dan carian nama. Kesesuaian masih bergantung pada pemilikan, identiti, ACL dan gelagat aplikasi di luar kalkulator.

Contoh yang berjaya: bandingkan mod direktori muat naik calon tanpa menetapkan satu

Peraturan penolakan khusus program memerlukan dokumentasi program dan bukti masa jalan. Sumber chmod tidak mengandungi dasar SSH, peraturan pelayan web atau konfigurasi aplikasi. Mereka tidak dapat membuktikan bahawa perisian menolak 777, menerima 755 atau memerlukan nilai lain. Kalkulator sahaja menukar mod dan menerangkan operasi fail atau direktori biasa mereka.

Jika perisian melaporkan kebenaran sebagai terlalu luas, masukkan mod yang diperhatikan dan periksa kumpulannya dan bit lain. Kemudian rujuk bukti berwibawa untuk program itu sebelum mengubah apa-apa. Baris chmod yang dihasilkan ialah teks lengai. Paparan oktal dan simbolik yang sepadan mengesahkan ketekalan penukaran, bukan pematuhan dengan dasar program atau kejayaan operasi masa hadapan.

Peraturan penolakan khusus program memerlukan dokumentasi program tersebut

Penafian kawalan akses mandatori terletak di luar chmod dan kalkulator. Tiada pertanyaan sumber SELinux, AppArmor atau enjin dasar lain. Oleh itu, mod 777 boleh dipaparkan dengan sempurna manakala kawalan yang tidak berkaitan kekal tidak kelihatan. Halaman tidak boleh membezakan syarat itu daripada pemilikan, ACL, sekatan storan atau aplikasi; semuanya adalah kemungkinan luaran dan bukannya penemuan kalkulator.

Jangan anggap mod luas sebagai ujian universal bagi setiap lapisan kebenaran. Bukti kalkulator berakhir dengan pemilik, kumpulan dan bit lain ditambah setuid, setgid dan sticky. Ia menunjukkan kebenaran yang dipilih, bukan sebab operasi gagal atau berjaya. Kekalkan mod yang diperhatikan, bandingkan bit tepat dan siasat dasar luaran secara bebas.

Penafian dasar mandatori adalah di luar chmod dan di luar kalkulator

Fahami setiap pemberian sebelum meluaskan mod. Masukkan 777 dan kesemua sembilan kebenaran biasa menjadi jelas. Bandingkan 755 untuk mengalih keluar kumpulan dan tulisan lain, atau 775 untuk mengekalkan tulisan kumpulan sambil mengalih keluar tulisan lain. Transformasi fakta ini mendedahkan permukaan akses setiap calon tanpa memilih mod untuk pemilik, proses atau beban kerja yang tidak diketahui.

Selesaikan identiti dan pemilikan di luar pelayar, kemudian sahkan sahaja bit yang dimaksudkan. Sahkan bahawa oktal, teks simbolik, ringkasan dan kotak semak bersetuju, menggunakan penjelasan fail atau direktori yang betul. Halaman menolak input yang salah, tetapi tidak menjalankan chmod atau mengenal pasti kompromi. Keputusan kebenaran akhir adalah milik persekitaran yang diperiksa.