Bahasa Melayu

Alat pembangun · Kalkulator Chmod

Digit chmod keempat: bagaimana setuid, setgid dan bit melekit berfungsi

· Bagaimana ia berfungsi

chmod unix aliran kerja pembangun

bit khas ditunjukkan sebagai gambar rajah bit kebenaran Unix yang berbeza
Ilustrasi vektor ToolAcre asal

Mod seperti 4755 dan 2775 membawa digit utama yang mengubah siapa program dijalankan sebagai atau siapa yang memiliki fail baharu. Siaran ini menerangkan tiga bit khas dan cara ia muncul dalam ls -l.

S dalam drwxrwsr-x — direktori projek kongsi berkelakuan berbeza dan output ls mempunyai huruf yang tiada dalam helaian cheat asas

S dalam rwxrwsr-x merekodkan dua fakta dalam satu kedudukan: setgid didayakan, dan pelaksanaan kumpulan juga didayakan. Pelaksanaan menyimpan setgid sebagai oktal 2000, kemudian menggantikan s untuk aksara laksana kumpulan. Dengan penanda jenis direktori dipilih, mod 2775 muncul sebagai drwxrwsr-x manakala ringkasan empat digit mengekalkan digit bit khas terkemuka.

Output itu ialah penukaran, bukan pemerhatian sistem fail. Pemilih sasaran mengubah cara halaman menerangkan bit, tetapi ia tidak pernah membuka direktori atau memeriksa pemilikan. Untuk direktori, penjelasan yang dilaksanakan mengatakan fail yang baru dibuat mewarisi kumpulan direktori. Sama ada sistem storan tertentu menggunakan tingkah laku itu, atau dasar lain mempengaruhi akses, memerlukan bukti di luar kalkulator ini.

Digit keempat dan hurufnya — 4, 2 dan 1 sebagai awalan pada mod biasa, ditunjukkan sebagai s dan t dalam kedudukan laksana, huruf besar apabila bit laksana di bawah dimatikan

Angka perlapanan terkemuka menggabungkan tiga topeng bebas: setuid ialah 4000, setgid ialah 2000 dan melekit ialah 1000. Huruf mereka menduduki kedudukan pelaksanaan sedia ada dan bukannya menambah aksara pada paparan sembilan kedudukan. Setuid menggunakan kedudukan pemilik, menetapkan kedudukan kumpulan, dan melekat pada kedudukan lain. Matriks mendedahkan ketiga-tiga secara berasingan daripada baca, tulis dan laksana biasa.

Kes mendedahkan bit pelaksanaan asas. Mod 4755 menjadikan rwsr-xr-x kerana pemilik execute mengiringi setuid; 4644 menjadikan rwSr--r-- kerana ia tidak. Penghurai membaca kedua-dua borang kembali ke dalam bit khas dan laksana yang sepadan. Peraturan bawah-berbanding-atas yang sama menghasilkan s atau S untuk setgid dan t atau T untuk melekit, mengekalkan semua kombinasi semasa perjalanan pergi dan balik.

setuid pada executable — bagaimana /usr/bin/passwd berjalan dengan keistimewaan pemilik fail dan sebab Linux mengabaikan setuid pada skrip yang ditafsirkan

Untuk fail biasa, penjelasan setuid yang dilaksanakan bergantung pada pelaksanaan pemilik. Apabila kedua-dua bit hadir, halaman mengatakan menjalankan fail menggunakan identiti pemilik fail dan bukannya pemanggil. Apabila setuid hadir tanpa pemilik melaksanakan, paparan menggunakan modal S dan menerangkan bahawa tiada apa-apa untuk dijalankan. Ini ialah skop bahagian yang diperbetulkan dan disokong sumber.

Kalkulator tidak mengenal pasti sesuatu boleh laku, melancarkan satu atau memeriksa cara platform mengendalikan skrip. Buktinya ialah mod yang dibekalkan dan pilihan sasaran. Mod 4755 boleh diuraikan menjadi setuid tambah rwxr-xr-x, dan pratonton tugasan menambahkan u+s selepas klausa biasa. Itu mengesahkan rendering dan penjelasan sahaja; kesesuaian program dan pelaksanaan sebenar kekal sebagai persoalan luaran.

rendering setuid dan penjelasan untuk fail biasa

Setgid pada direktori diwakili secara bebas daripada kebenaran kumpulan biasa. Mod 2775 menggabungkan topeng 2000 dengan pemilik dan kumpulan 7 dan 5 yang lain. Paparan rwxrwsr-x memastikan kumpulan membaca, menulis dan melaksanakan sambil menggantikan x kelihatan dengan s. Penjelasan direktori mengaitkan bit khas dengan warisan kumpulan direktori untuk fail yang baru dibuat.

Mengalih keluar pelaksanaan kumpulan sambil mengekalkan setgid menukar huruf kedudukan kumpulan kepada huruf besar S. Amaran yang boleh dilihat itu mengikuti terus daripada pemapar, tanpa mengira perkataan sasaran. Halaman boleh membandingkan nilai yang telah dilengkapkan dan menunjukkan kotak pilihan yang berubah, tetapi halaman itu tidak boleh memeriksa direktori kongsi, kumpulan semasanya atau identiti yang mencipta entri. Persetujuan antara pandangan adalah bukti aritmetik, bukan kelulusan operasi.

Bit melekat pada direktori — pemadaman terhad dalam /tmp dan sebab 1777 tidak sama dengan 777

Sticky menduduki kedudukan lain-eksekusi dan menyumbang oktal 1000. Untuk mod direktori 1777, semua kebenaran biasa kekal didayakan dan aksara simbolik terakhir menjadi t. Penjelasan direktori yang dilaksanakan menambah sekatan pemadaman dan nama semula, manakala penjelasan 777 memberi amaran tentang direktori boleh tulis tanpa melekit. Oleh itu penukar menjadikan perbezaan satu-bit kelihatan tanpa mengubah tiga kali ganda rwx asas.

Jika sticky hadir tanpa pelaksanaan lain, aksara akhir ialah huruf besar T sebaliknya. Penghurai dan pemapar mengekalkan perbezaan itu dalam kedua-dua arah. Halaman itu tidak memeriksa direktori kongsi sebenar, pemilik entri atau percubaan pemadaman. Kesimpulan yang boleh dipercayai adalah lebih sempit: integer yang dibekalkan mengandungi melekit, pasangan pelaksanaannya boleh dilihat melalui huruf besar, dan teks penerangan berorientasikan direktori dipilih.

Contoh yang berjaya: membina 2775 untuk direktori kongsi — memperoleh digit dan simbolik setara chmod g+s,a+rwx,o-w

Bina 2775 sebagai empat komponen yang boleh dilihat: digit khas 2 untuk setgid, digit pemilik 7 untuk rwx, digit kumpulan 7 untuk rwx dan digit lain 5 untuk r-x. Memasukkan nilai lengkap menghasilkan rwxrwsr-x. Matriks memilih setgid secara berasingan, manakala ringkasan menamakan pemilik, kumpulan dan kebenaran lain bersama bit khas itu.

Senarai tugasan yang dihasilkan ialah u=rwx,g=rwx,o=rx,g+s. Ini berbeza daripada paparan sembilan aksara tetapi mewakili nilai dua belas bit yang sama. Memilih direktori menukar penjelasan kepada perkataan warisan kumpulan yang dilaksanakan; memilih fail mengubah perkataan tanpa mengubah 2775. Kalkulator tidak sekali-kali mengesahkan kumpulan sasaran atau mencipta fail, jadi contoh itu kekal sebagai model dan bukannya preskripsi penggunaan.

Contoh yang berjaya: membina dan membaca 2775 untuk model direktori kongsi

Tingkah laku pelekap, keupayaan dan semantik platform tambahan tidak dimodelkan. Halaman ini tidak mempunyai input pelekap, set keupayaan, pertanyaan kernel atau probe sistem fail. Ia boleh mewakili setuid, setgid, dan sticky dan boleh mengubah penjelasannya antara fail biasa dan direktori. Ia tidak dapat menentukan sama ada peraturan luaran meneutralkan, memanjangkan atau mentafsir bit tersebut secara berbeza pada sasaran sebenar.

Malah kata sudut sumber tidak boleh digeneralisasikan di luar antara muka. Mod bit khas yang sah membuktikan bahawa penghurai, pemapar, matriks, ringkasan dan tugasan yang dijana bersetuju. Ia tidak membuktikan tingkah laku pelaksanaan, pewarisan atau pemadaman berlaku. Jauhkan tuntutan dasar yang tidak disokong daripada diagnosis dan anggap perintah yang disalin sebagai teks lengai sehingga persekitaran yang diperiksa secara berasingan membekalkan konteks yang hilang.

Dasar pelekap, keupayaan dan semantik sudut yang tidak dilaksanakan kekal luaran

Bawa pulang yang dilaksanakan ialah perjalanan pergi dan balik dengan makna kedudukan. Setuid memetakan kepada pemilik melaksanakan kedudukan, setgid untuk melaksanakan kumpulan, dan melekat pada pelaksanaan lain. Huruf kecil bermaksud bit laksana yang berkaitan dihidupkan; huruf besar bermakna ia dimatikan. Digit oktal terkemuka dan kotak pilihan khusus mengekalkan maklumat yang sama, jadi tiada bit istimewa perlu disimpulkan daripada prosa sahaja.

Uji mod khas dengan membandingkan semua perwakilan. Untuk 2775, jangkakan 2 terkemuka, kedudukan kumpulan s, kotak setgid bertanda dan penambahan g+s yang dijana. Ketidakpadanan akan mendedahkan masalah penukaran. Perjanjian menetapkan sahaja satu mod yang konsisten. Pemilikan, dasar pelekap, keupayaan, peraturan aplikasi dan akibat menjalankan chmod kekal di luar bukti kalkulator pelayar.