Alat pengembang · Kalkulator Chmod
Digit chmod keempat: cara kerja setuid, setgid, dan sticky bit
· Cara kerjanya
chmod unix alur kerja pengembang
Mode seperti 4755 dan 2775 membawa digit terdepan yang mengubah siapa yang menjalankan program atau siapa yang memiliki file baru. Posting ini menjelaskan tiga bit khusus dan bagaimana bit tersebut muncul di ls -l.
S di drwxrwsr-x — direktori proyek bersama berperilaku berbeda dan keluaran ls memiliki huruf yang tidak ada di lembar contekan dasar
S di rwxrwsr-x mencatat dua fakta dalam satu posisi: setgid diaktifkan, dan eksekusi grup juga diaktifkan. Implementasinya menyimpan setgid sebagai oktal 2000, lalu menggantikan s dengan karakter eksekusi grup. Dengan memilih penanda jenis direktori, mode 2775 muncul sebagai drwxrwsr-x sementara ringkasan empat digit mempertahankan digit bit khusus di depannya.
Outputnya adalah konversi, bukan observasi sistem file. Pemilih target mengubah cara halaman menjelaskan bit, namun tidak pernah membuka direktori atau memeriksa kepemilikan. Untuk direktori, penjelasan yang diterapkan menyatakan bahwa file yang baru dibuat mewarisi grup direktori. Apakah sistem penyimpanan tertentu menerapkan perilaku tersebut, atau kebijakan lain memengaruhi akses, memerlukan bukti di luar kalkulator ini.
Digit keempat dan hurufnya — 4, 2 dan 1 sebagai awalan pada mode familiar, ditampilkan sebagai s dan t pada posisi eksekusi, huruf besar ketika bit eksekusi di bawahnya mati
Digit oktal terdepan menggabungkan tiga masker independen: setuid adalah 4000, setgid adalah 2000, dan sticky adalah 1000. Huruf-hurufnya menempati posisi eksekusi yang ada daripada menambahkan karakter ke tampilan sembilan posisi. Setuid menggunakan posisi pemilik, setgid posisi grup, dan melekat pada posisi lainnya. Matriks mengekspos ketiganya secara terpisah dari pembacaan, penulisan, dan eksekusi biasa.
Case mengungkapkan bit eksekusi yang mendasarinya. Mode 4755 merender rwsr-xr-x karena eksekusi pemilik menyertai setuid; 4644 merender rwSr--r-- karena tidak. Parser membaca kedua formulir kembali ke bit khusus dan bit eksekusi yang sesuai. Aturan bawah-versus-atas yang sama menghasilkan s atau S untuk setgid dan t atau T untuk lengket, mempertahankan semua kombinasi selama perjalanan bolak-balik.
setuid pada file yang dapat dieksekusi — bagaimana /usr/bin/passwd berjalan dengan hak istimewa pemilik file dan mengapa Linux mengabaikan setuid pada skrip yang ditafsirkan
Untuk file biasa, penjelasan setuid yang diterapkan bergantung pada eksekusi pemilik. Ketika kedua bit ada, halaman tersebut mengatakan bahwa menjalankan file menggunakan identitas pemilik file, bukan identitas pemanggil. Ketika setuid hadir tanpa pemilik mengeksekusi, tampilan menggunakan huruf kapital S dan menjelaskan bahwa tidak ada yang dijalankan. Ini adalah cakupan bagian yang telah diperbaiki dan didukung sumber.
Kalkulator tidak mengidentifikasi executable tertentu, meluncurkannya, atau memeriksa bagaimana platform memperlakukan skrip. Buktinya adalah mode yang disediakan dan pilihan target. Mode 4755 dapat didekomposisi menjadi setuid plus rwxr-xr-x, dan pratinjau tugas menambahkan u+s setelah klausa biasa. Itu hanya memverifikasi rendering dan penjelasan; kesesuaian program dan pelaksanaan sebenarnya masih menjadi pertanyaan eksternal.
rendering setuid dan penjelasan untuk file biasa
Setgid pada direktori direpresentasikan secara independen dari izin grup biasa. Mode 2775 menggabungkan topeng 2000 dengan pemilik dan grup 7 dan 5 lainnya. Tampilan rwxrwsr-x membuat grup tetap membaca, menulis, dan mengeksekusi sambil mengganti x yang terlihat dengan s. Penjelasan direktori mengaitkan bit khusus dengan pewarisan grup direktori untuk file yang baru dibuat.
Menghapus eksekusi grup sambil mempertahankan setgid akan mengubah huruf posisi grup menjadi huruf kapital S. Peringatan yang terlihat tersebut mengikuti langsung dari penyaji, apa pun kata-kata targetnya. Halaman ini dapat membandingkan nilai-nilai yang diselesaikan dan menunjukkan kotak centang mana yang berubah, namun tidak dapat memeriksa direktori bersama, grupnya saat ini, atau identitas yang membuat entri. Kesepakatan di antara pandangan-pandangan tersebut merupakan bukti aritmatika, bukan persetujuan operasional.
Bagian penting pada direktori — penghapusan terbatas di /tmp dan mengapa 1777 tidak sama dengan 777
Sticky menempati posisi eksekusi lainnya dan menyumbang oktal 1000. Untuk mode direktori 1777, semua izin biasa tetap diaktifkan dan karakter simbolis terakhir menjadi t. Penjelasan direktori yang diterapkan menambahkan batasan penghapusan dan penggantian nama, sedangkan penjelasan 777 memperingatkan tentang direktori yang dapat ditulis tanpa lengket. Dengan demikian konverter membuat perbedaan satu bit terlihat tanpa mengubah tiga kali lipat rwx yang mendasarinya.
Jika sticky hadir tanpa eksekusi lainnya, karakter terakhirnya adalah huruf besar T. Parser dan renderer mempertahankan perbedaan tersebut di kedua arah. Halaman ini tidak memeriksa direktori bersama yang sebenarnya, pemilik entri, atau upaya penghapusan. Kesimpulannya yang dapat diandalkan lebih sempit: bilangan bulat yang disediakan berisi tempel, pendamping eksekusinya terlihat melalui huruf besar/kecil, dan teks penjelasan berorientasi direktori dipilih.
Contoh praktis: membangun 2775 untuk direktori bersama - menurunkan digit dan simbolis yang setara chmod g+s,a+rwx,ow
Bangun 2775 sebagai empat komponen yang terlihat: digit khusus 2 untuk setgid, digit pemilik 7 untuk rwx, digit grup 7 untuk rwx, dan digit lainnya 5 untuk r-x. Memasukkan nilai selesai menghasilkan rwxrwsr-x. Matriks memilih setgid secara terpisah, sedangkan ringkasan menyebutkan nama pemilik, grup, dan izin lain di samping bit khusus tersebut.
Daftar tugas yang dihasilkan adalah u=rwx,g=rwx,o=rx,g+s. Ini berbeda dari tampilan sembilan karakter tetapi mewakili nilai dua belas bit yang sama. Memilih direktori mengubah penjelasan menjadi kata-kata warisan kelompok yang diterapkan; memilih file akan mengubah kata-katanya tanpa mengubah 2775. Kalkulator tidak pernah memverifikasi grup target atau membuat file, jadi contohnya tetap berupa model, bukan resep penerapan.
Contoh praktis: membuat dan membaca 2775 untuk model direktori bersama
Perilaku pemasangan, kemampuan, dan semantik platform tambahan tidak dimodelkan. Halaman ini tidak memiliki input pemasangan, jaringan kemampuan, kueri kernel, atau pemeriksaan sistem file. Ini dapat mewakili setuid, setgid, dan sticky dan dapat memvariasikan penjelasannya antara file dan direktori biasa. Ia tidak dapat menentukan apakah aturan eksternal menetralisir, memperluas, atau menafsirkan bit-bit tersebut secara berbeda pada target sebenarnya.
Bahkan kata-kata di sudut sumber tidak boleh digeneralisasikan di luar antarmuka. Mode bit khusus yang valid membuktikan bahwa parser, renderer, matriks, ringkasan, dan tugas yang dihasilkan setuju. Ini tidak membuktikan terjadinya perilaku eksekusi, pewarisan, atau penghapusan. Jauhkan klaim kebijakan yang tidak didukung dari diagnosis, dan perlakukan perintah yang disalin sebagai teks inert hingga lingkungan yang diperiksa secara terpisah memberikan konteks yang hilang.
Kebijakan yang meningkat, kemampuan, dan semantik sudut yang belum diterapkan tetap bersifat eksternal
Kesimpulan yang diimplementasikan adalah perjalanan pulang pergi dengan makna posisional. Setuid memetakan ke posisi eksekusi pemilik, setgid ke eksekusi grup, dan melekat pada eksekusi lainnya. Huruf kecil berarti bit eksekusi terkait aktif; huruf besar berarti mati. Digit oktal terdepan dan kotak centang khusus menyimpan informasi yang sama, sehingga tidak ada bagian khusus yang perlu disimpulkan dari prosa saja.
Uji mode khusus dengan membandingkan semua representasi. Untuk 2775, harapkan 2 di depan, group-position s, kotak setgid yang dicentang, dan tambahan g+s yang dihasilkan. Ketidakcocokan akan menimbulkan masalah konversi. Perjanjian hanya menetapkan satu mode yang konsisten. Kepemilikan, kebijakan pemasangan, kemampuan, aturan aplikasi, dan konsekuensi menjalankan chmod tetap berada di luar bukti kalkulator browser.