Alat pengembang · Kalkulator Chmod
Apa yang chmod tidak bisa ungkapkan: kemampuan, file yang tidak dapat diubah, dan MAC
· Latar belakang
chmod unix kontrol akses
Bit mode adalah salah satu dari beberapa lapisan yang menentukan apakah suatu operasi berhasil. Posting ini memperkenalkan yang lain (kemampuan file, flag chattr, SELinux dan AppArmor) dan cara mengenali penolakan masing-masing.
Root tidak dapat menulis file 644 — mode mengatakan ya, chmod tidak mengubah apa pun, dan kesalahan tetap ada
Suatu mode mungkin mengizinkan suatu operasi sementara operasi tersebut masih gagal. Kalkulator menerjemahkan 644 sebagai rw-r--r--, artinya pemilik dapat membaca dan memodifikasi file biasa sementara grup dan orang lain dapat membacanya. Itu hanya menyelesaikan bagian-bagian tradisional yang disediakan. Hal ini tidak membuktikan kepemilikan proses, identitas jalur, maupun tidak adanya lapisan penegakan lainnya.
Sumber menyebutkan beberapa kontrol yang tidak dimodelkan: kemampuan, atribut yang tidak dapat diubah, kebijakan akses wajib, tanda pemasangan, namespace, filter syscall, ACL, dan kepemilikan. Memasuki kembali mode atau membuat perintah chmod lain tidak mengungkapkan apa pun tentang mode tersebut. Pertama verifikasi kesesuaian oktal, simbolik, dan matriks; jika kegagalan terus berlanjut, kumpulkan bukti dari lingkungan daripada memperluas dugaan chmod.
Operasi yang kompatibel dengan mode masih bisa gagal untuk lapisan yang tidak dapat dilihat oleh alat ini
Model kalkulator tidak ada urutan di antara kontrol eksternal. Seluruh model datanya adalah bilangan bulat dari oktal 0000 hingga 7777, diperluas menjadi pemilik, grup, lainnya, setuid, setgid, dan boolean lengket. Penjelasannya menggunakan nilai dan tipe target tersebut. Tidak ada jalur keputusan kernel, urutan modul keamanan, atau hasil panggilan sistem yang dimasukkan dalam perhitungan.
Batasan itu menjadikan halaman sebagai langkah pertama yang terkontrol. Konfirmasikan modenya, bedakan traversal dari eksekusi, dan catat huruf bit khusus. Artikel 501 menambahkan kepemilikan dan eksekusi direktori induk sebagai pemeriksaan terdekat. Selain itu, sumber-sumber ini tidak memberikan peringkat diagnostik di antara ACL, kebijakan wajib, pemasangan, atribut, namespace, kemampuan, atau filter. Mode yang kompatibel hanya mempersempit pertanyaan.
Kalkulator tidak memodelkan pemesanan di antara lapisan penegakan eksternal
Kemampuan file berada di luar bukti yang tersedia. Implementasinya tidak berisi nama kemampuan, pengurai data, perintah inspeksi, atau akun interaksinya dengan setuid. Itu dapat menyandikan setuid sebagai 4000 dan menjelaskan file biasa yang dapat dieksekusi. Hal ini tidak boleh dibandingkan dengan sistem hak istimewa yang lebih terperinci yang tidak dimodelkan atau didokumentasikan oleh repositori ini.
Apa yang dibuktikan halaman tersebut adalah nyata. Mode 4755 menjadi rwsr-xr-x, nama ringkasannya setuid, dan tugas ditambahkan u+s. Mode 4644 menggunakan huruf besar S karena eksekusi pemilik tidak ada, memperlihatkan kombinasi yang disebut hampir selalu salah. Pengujian menetapkan fakta-fakta modus tersebut; alat eksternal harus menentukan apakah ada kemampuan, mengizinkan akses, atau menawarkan desain yang lebih baik.
Kemampuan file berada di luar kumpulan sumber
Atribut yang tidak dapat diubah dan hanya ditambahkan juga tidak ada dalam model. Kalkulator tidak membaca atribut sistem file atau mengenali perintah untuk mengubahnya. Matriksnya berisi rwx untuk pemilik, grup, dan lainnya, ditambah tiga bit khusus. Oleh karena itu, bit tulis yang terlihat tidak dapat menjamin keberhasilan penulisan, dan pengalihannya berulang kali tidak dapat mendiagnosis atribut yang tidak pernah diamati oleh halaman tersebut.
Jaga agar pembedaan tetap operasional. Jika 644 ditampilkan dengan benar, tulisan pemilik ada dalam mode tradisional; itu adalah bukti representasi, bukan tulisan lengkap. Halaman tersebut tidak membuka jalur tampilan yang dikutip dengan aman atau menjalankan perintah yang dihasilkannya. Ketika bit yang cukup menyertai kegagalan nyata, periksa objek dan sistem sebenarnya daripada mengatribusikan keadaan yang tidak teramati.
Atribut yang tidak dapat diubah dan hanya ditambahkan berada di luar kumpulan sumber
Konteks, profil, dan log kontrol akses wajib tidak diuraikan di sini. Sumber menyebutkan SELinux dan AppArmor hanya sebagai contoh keputusan yang tidak dapat diamati oleh kalkulator. Mereka tidak menyediakan sintaksis konteks, semantik kebijakan, format log, atau perintah diagnostik. Oleh karena itu, modus saja tidak dapat menghubungkan penolakan dengan salah satu sistem; bukti harus datang dari lingkungan penegak hukum.
Pemilih file atau direktori memperkuat batas ini. Ini mengubah kata kerja seperti jalankan, daftar, buat, hapus, masukkan, dan jangkau, namun tidak mengubah bilangan bulat atau membaca label kebijakan. Program dan direktori 755 berbagi rwxr-xr-x sambil menjelaskan tindakan biasa yang berbeda. Tidak ada penjelasan yang memprediksi hasil kebijakan wajib, jadi pertahankan mode terverifikasi dan lihat log platform.
Konteks dan log kontrol akses wajib berada di luar kumpulan sumber
Mode yang disediakan tidak dapat menampilkan opsi pemasangan. Kalkulator menerima teks oktal atau simbolik dan jalur opsional yang hanya digunakan untuk tampilan perintah. Ia tidak pernah membuka jalur itu, mengidentifikasi pemasangannya, atau membaca konfigurasi. Sumber tersebut mencantumkan perilaku read-only, no-execute, dan no-setuid sebagai masalah eksternal, namun tidak memberikan detail platform untuk mendiagnosis kebijakan tersebut.
Teks yang dihasilkan mungkin menyertakan mode oktal, jalur yang dikutip, dan tanda -R yang ditampilkan, namun tidak ada yang membuktikan sistem file akan memenuhi permintaan tersebut. Bahkan nilai bit khusus yang bolak-balik dengan sempurna mungkin tidak efektif berdasarkan aturan yang tidak terlihat. Perlakukan perintah tersebut sebagai artefak peninjauan, lalu verifikasi sistem file target sebelum mengklaim izin diubah atau eksekusi dapat dilakukan.
Opsi pemasangan tidak ditemukan dari mode yang disediakan
Namespace dan filter syscall tidak muncul di mana pun dalam model mode. Input tidak berisi identitas proses, konteks kontainer, daftar syscall, atau konfigurasi runtime. Halaman tidak dapat mengetahui apakah suatu proses melihat jalur yang sama, mencapai objek yang diharapkan, atau panggilan difilter. Pertanyaan tersebut pada dasarnya berbeda dengan menambahkan 4, 2, dan 1 dalam izin tiga kali lipat.
Jangan menyimpulkan mekanisme runtime dari konversi yang berhasil. Validasi mencakup bentuk angka oktal yang salah, panjang simbol, dan huruf yang salah letak. Hasil yang valid hanya berarti teks tersebut dipetakan ke mode yang dapat direpresentasikan; itu tidak memvalidasi lingkungan eksekusi. Karena teks shell yang dihasilkan tidak aktif, analisis namespace dan filter masih memerlukan bukti runtime yang tidak ada di sumber ini.
Namespace dan filter syscall tidak terwakili
Mulailah dengan mode karena kompak dan mudah diatur masuk atau keluar. Terjemahkan nilainya, periksa setiap kelas, bedakan file dari direktori, dan tampilkan awalan bit khusus apa pun. Kesesuaian antara oktal, simbolik, matriks, ringkasan, dan penjelasan membuat pertanyaan tradisional terbentuk dengan baik. Ini mungkin mengungkapkan bagian yang hilang atau berlebihan, bukan otoritas eksklusif.
Lanjutkan hanya dengan bukti dari sistem nyata. Kepemilikan, ACL, atribut, kebijakan wajib, pemasangan, kemampuan, namespace, filter, dan aturan aplikasi tidak ditemukan di sini. Pratinjau tidak membaca atau mengubah file. Kesimpulan disiplinnya sempit: selesaikan aritmatika mode yang disediakan secara lokal, lalu selidiki penegakan eksternal alih-alih menelusuri nilai chmod yang lebih luas tanpa mengetahui penolakannya.