Alat pembangun · Kalkulator Chmod
mod simbolik chmod dijelaskan: u+x, g-w, o=r dan a+rX
· Bagaimana ia berfungsi
chmod unix aliran kerja pembangun
Bentuk simbolik chmod ialah tatabahasa kecil: siapa, operator, yang bit. Siaran ini memisahkannya supaya u+x dan go-rwx menjadi jelas dan menunjukkan apabila simbolik berdegup oktal.
Skrip penggunaan penuh dengan huruf — chmod u+x,go-w deploy.sh berfungsi, tetapi tiada sesiapa dalam pasukan boleh mengatakan perkara yang berubah
Perintah seperti u+x kelihatan seperti paparan simbolik kalkulator, tetapi kedua-dua bentuk mempunyai tugas yang berbeza. Medan simbolik boleh diedit menerima sembilan kedudukan kebenaran, secara pilihan didahului oleh aksara jenis fail yang diiktiraf. Sebaliknya, hujah chmod yang dijana menjelaskan tugasan lengkap dengan klausa u=, g=, dan o=, jadi ia mewakili mod tetap dan bukannya menghuraikan perubahan relatif.
Memasuki 750 menjadikan perbezaan itu konkrit. Paparan ialah rwxr-x---, manakala tugasan yang dihasilkan ialah u=rwx,g=rx,o=. Kedua-duanya menerangkan pemilik, kumpulan dan bit lain yang sama, namun sahaja yang kedua diformatkan sebagai hujah chmod. Halaman itu tidak pernah menjalankan arahan itu. Ia mendedahkan perwakilan supaya nilai yang dicadangkan boleh disemak sebelum sebarang tindakan shell berasingan.
Kalkulator memisahkan paparan gaya ls daripada senarai tugasan yang dijananya
Huruf u, g dan o muncul dalam tugasan yang dijana kerana ia melabelkan pemilik, kumpulan dan lain-lain. Setiap output menamakan ketiga-tiga kelas secara eksplisit, termasuk klausa kosong apabila kelas tidak mempunyai kebenaran. Kalkulator tidak menghuraikan yang ditinggalkan-siapa tatabahasa atau trengkas. Inputnya bermula daripada mod yang lengkap, bukan arahan yang hasilnya bergantung pada sasaran sedia ada.
Pembetulan ini menghalang tuntutan berlebihan yang halus. Matriks boleh menunjukkan dengan tepat kelas yang menerima baca, tulis atau laksanakan, tetapi ia tidak dapat menentukan maksud pemilih kelas yang ditinggalkan dalam pelaksanaan chmod yang lain. Sebaliknya, bandingkan tiga lajur matriks dengan tiga klausa tugasan. Perjanjian mereka mengesahkan nilai tetap tanpa bergantung pada peraturan arahan relatif yang tidak dilaksanakan antara muka ini.
Huruf siapa yang muncul dalam tugasan yang dijana; relatif ditinggalkan-siapa tatabahasa tidak dihuraikan
Penjana tugasan menggunakan = untuk setiap kelas biasa. Pilihan itu membina semula pemilik, kumpulan dan triple lain yang diminta dengan tepat, termasuk mengosongkan kelas dengan memancarkan sebelah kanan kosong. Walaupun + dan - tergolong dalam perintah chmod simbolik, ia tidak diterima sebagai input kalkulator. Oleh itu, halaman itu tidak memodelkan penambahan atau pengalihan tambahan daripada mod permulaan yang tidak diketahui.
Perbandingan satu bit menunjukkan perkara yang boleh dibuktikan oleh aliran kerja yang disokong. Mod 750 menghasilkan rwxr-x---; menukar digit kumpulan kepada 7 menghasilkan rwxrwx--- dan menukar g=rx kepada g=rwx. Kalkulator mengenal pasti mod sebelum dan selepas selesai. Ia tidak menilai g+w terhadap fail langsung, kerana tiada mod semasa, laluan, sistem fail atau pelaksanaan perintah mengambil bahagian dalam penukaran.
Operator yang dijana ialah =, manakala + dan - tatabahasa input kekal di luar alat
Penghurai mengecam r dan w dalam kedudukan tetap mereka, ditambah x atau - dalam kedudukan laksana biasa. Ia juga menerima s, S, t, dan T di mana bit khas berkongsi kedudukan tersebut. Modal X berbeza: ia tergolong dalam tatabahasa chmod relatif dan tidak disokong di sini. Membekalkan X ditolak dan bukannya ditafsirkan secara senyap sebagai bit laksana biasa.
Huruf khas kecil dan besar dilaksanakan dengan sengaja. Setuid dan setgid menggunakan s apabila bit laksana padanannya ada dan S apabila ia tiada; sticky menggunakan t atau T dengan peraturan yang sama dalam kedudukan lain-laksana. Baris khas dan ringkasan empat digit mengekalkan bit tersebut. Tiada satu pun daripada ini menambah sokongan untuk pemilihan modal-X bersyarat merentas fail dan direktori.
Penghurai menerima r, w, x, s, S, t dan T; modal X tidak disokong
Ungkapan salinan kelas seperti g=u tidak dilaksanakan. Kalkulator tidak pernah membaca kelas sumber daripada objek sedia ada atau menggunakan bit satu kelas kepada yang lain. Ia menerima mod oktal atau gaya ls yang lengkap, menukar nilai itu kepada boolean bernama dan mengeluarkan bendera eksplisit untuk setiap kelas. Sebarang hasil salinan mesti dikira di tempat lain sebelum halaman ini boleh memeriksanya.
Katakan langkah luaran menentukan bahawa pemilik dan kumpulan harus kedua-duanya mempunyai rwx manakala yang lain tiada. Memasuki 770 menghasilkan rwxrwx--- dan u=rwx,g=rwx,o=. Itu mengesahkan hasil yang lengkap tetapi tidak membuktikan bagaimana ia diperoleh. Pemilikan juga masih tidak diketahui: penukar melabelkan kelas tanpa mengenal pasti pemilik sebenar, kumpulan atau proses yang akan menemui sasaran.
Kebenaran menyalin antara kelas tidak dilaksanakan
Mod 0750 diterima dengan sifar pendahuluannya dan dihuraikan sebagai nilai yang sama seperti 750. Digit pemilik 7 mendayakan baca, tulis dan laksana; digit kumpulan 5 mendayakan baca dan laksana; digit lain 0 tidak mendayakan apa-apa. Paparan disegerakkan menjadi rwxr-x---, dan ringkasan sentiasa empat digit memastikan 0750 kelihatan sebagai nilai semakan yang tidak jelas.
Tugasan simbolik yang dijana untuk mod tetap itu ialah u=rwx,g=rx,o=. Tiga klausanya sepadan terus dengan lajur matriks, manakala pratonton perintah oktal menggunakan 750 melainkan bit khas memerlukan digit keempat. Laluan yang dibekalkan boleh disebut dalam pratonton, tetapi ia tidak pernah dibuka. Contoh itu mengesahkan perwakilan, bukan pemilikan, kebenaran atau perubahan kebenaran yang berjaya.
Contoh berfungsi: 0750 sebagai mod tetap dan senarai tugasan yang dijana
Perubahan berasaskan rujukan, pengendalian symlink dan operasi ACL kekal di luar penukar ini. Tiada input fail rujukan, lintasan laluan, model entri ACL atau pertanyaan sistem fail dalam halaman. Memilih rekursi sahaja menambah bendera -R yang dipaparkan. Akibatnya, arahan yang dijana tidak boleh melaporkan objek mana yang akan dicapai atau sama ada lapisan kawalan akses lain mengubah hasil yang berkesan.
Input tidak sah menyediakan semakan sempadan yang berguna. Surat kebenaran yang salah letak, X tidak disokong, penanda mengekor atau angka perlapanan yang cacat ditolak dan bukannya dibaiki. Membetulkan teks kepada paparan sembilan aksara yang disokong menghasilkan mod dan paparan disegerakkan. Penerimaan itu sahaja membuktikan bahawa rentetan memetakan kepada dua belas bit yang dilaksanakan; ia tidak mengesahkan ciri chmod luaran atau persekitaran sasaran.
Rujukan, symlink dan operasi ACL kekal di luar penukar ini
Perbezaan praktikal adalah antara paparan gaya ls dan tugasan tetap yang dijana, bukan antara input simbolik sebagai input relatif dan input oktal sebagai mutlak. Kedua-dua borang boleh diedit mewakili mod yang lengkap. Kalkulator menukar sama ada satu kepada integer, matriks, ringkasan, penjelasan dan pratonton yang sama, kemudian mengeluarkan klausa u=, g=, dan o= eksplisit untuk borang arahan simbolik.
Gunakan pandangan yang disegerakkan itu untuk menangkap kesilapan aritmetik. Jika 750, rwxr-x---, dan u=rwx,g=rx,o= muncul bersama-sama, mod tetap adalah konsisten secara dalaman. Berhenti di sana melainkan sistem sebenar membekalkan lebih banyak bukti. Halaman ini tidak menghuraikan pengendali relatif, pemilih yang ditinggalkan, penyalinan kelas atau huruf besar X, dan ia tidak dapat menentukan sama ada mod menangani operasi yang gagal sebenar.