Apa yang dimaksud dengan modal X di posix / chmod?


11

Aku tahu apa yang ugoa (pemilik, grup, orang lain, semua) atau rwx (baca / kanan / mengeksekusi) atau 4,2,1 atau -, f, d, l, dan saya mencoba untuk membaca dalam man chmodmemahami apa modal Xdi chmodtapi tidak ada entri untuk itu. Saya kemudian membaca di artikel ini di posix / chmod tetapi terjebak dalam bagian ini:

Tetapkan bit yang dapat dieksekusi hanya jika target a) adalah direktori b) sudah memiliki setidaknya satu bit yang dapat dieksekusi untuk setiap pengguna, grup, dan yang lainnya.

Saya juga membaca di artikel ini yang memberikan contoh kode ini:

chmod -R u=rwX,g=rX,o=rX testdir/

Saya mengerti ada izin rekursif pada testdir/, sehubungan dengan pemilik (u), grup (g), dan lainnya (o) tapi saya akui saya masih merindukan niat ibukota X.

Mungkin ungkapan didaktik di sini dapat menjelaskan ini (alasan utama saya mempublikasikan ini di sini adalah karena saya tidak menemukan sesi SE tentang ini).

Memperbarui

Maaf semua, aku merindukan itu di dalam pria Saya tidak membayangkan X akan muncul sebelum daftar argumen dan saya pikir pencarian kembali x bukan X, salah saya.

Jawaban:


20

Halaman manual mengatakan:

jalankan / cari hanya jika file tersebut adalah direktori atau sudah memiliki izin eksekusi untuk beberapa pengguna ( X)

POSIX mengatakan:

The perm simbol X akan mewakili mengeksekusi / mencari sebagian dari mode file bit jika file adalah sebuah direktori atau jika saat ini (dimodifikasi) mode file bit memiliki setidaknya satu dari eksekusi bit (S_IXUSR, S_IXGRP, atau S_IXOTH) set. Itu harus diabaikan jika file bukan direktori dan tidak ada bit eksekusi yang ditetapkan dalam bit mode file saat ini.

Ini adalah tanda izin bersyarat: chmodlihat apa pun yang sedang diproses, dan apakah itu direktori, atau jika bit eksekusi apa pun diatur dalam izin saat ini (pemilik, grup, atau lainnya), ia bertindak seolah-olah izin yang diminta adalah x, kalau tidak, mengabaikannya. Kondisi ini diverifikasi pada saat chmodmenerapkan Xinstruksi khusus , sehingga Anda dapat menghapus bit yang dijalankan dalam menjalankan yang sama dengan a-x,a=rwXhanya mengatur bit yang dapat dieksekusi pada direktori.

Anda dapat melihat apakah file memiliki bit eksekusi yang dijalankan dengan melihat bagian "akses" dari statoutput, atau kolom pertama dari ls -l. Execute bits diwakili oleh x. -rwxr-xr-xumum untuk executable dan menunjukkan bahwa bit executable diatur untuk pemilik, grup, dan pengguna lain; -rw-r--r--umum untuk file lain dan menunjukkan bahwa bit yang dapat dieksekusi tidak disetel (tetapi bit baca ditetapkan untuk semua orang, dan bit tulis untuk pemilik). Lihat Memahami izin UNIX dan atributnya yang jauh lebih detail.

Jadi dalam contoh Anda, u=rwXtetapkan izin pemilik untuk membaca dan menulis dalam semua kasus, dan untuk direktori dan file yang dapat dieksekusi, jalankan; juga untuk grup ( g=rX) dan lainnya ( o=rX), baca, dan jalankan untuk direktori dan file yang dapat dieksekusi.

Maksud dari operator ini adalah untuk memungkinkan pengguna untuk memberikan chmodberbagai file dan direktori, dan mendapatkan izin eksekusi yang benar (dengan asumsi tidak ada file yang memiliki set bit eksekusi yang tidak valid). Ini menghindari harus membedakan antara file dan direktori (seperti pada tradisional find . -type f -exec chmod 644 {} +dan find . -type d -exec chmod 755 {} +perintah), dan upaya untuk berurusan dengan executable dengan cara yang masuk akal.

(Perhatikan bahwa MacOSchmod ternyata hanya mendukung Xuntuk +operasi.)


Jadi saya memang melihatnya dan saya mendapatkan pemahaman yang salah tentang istilah "bit set". itu inode dengan pemilik: root dan grup: root dan izin ---, ---, ---indoe tanpa "bit set"?
Arcticooling

Ya, ---------berarti tidak ada bit yang ditetapkan. Anda mungkin menemukan pertanyaan ini bermanfaat.
Stephen Kitt

Stephen, saya pikir menambahkan definisi istilah "mengeksekusi set bit" (saya akan menggambarkan sebagai ...,...,...) serta "set bit mengeksekusi mengeksekusi" (saya akan menggambarkan sebagai ---,---,---), pada awal jawaban, dapat membantu membuatnya lebih didaktik dan menurunkan peluang siapa pun yang melewatkan itu; Inilah saya awalnya jatuh dengan ini.
Arcticooling

@Arcticooling, yah, izinnya dikodekan dalam bit, dan misalnya halaman manual GNU untuk chmodmengatakannya "mengubah bit mode file dari setiap file yang diberikan" dll. Jadi dalam konteks, "jalankan bit (s)" rujuk ke tiga kemungkinan (ugo) +xizin. Menurut saya, "no bits set" terdengar aneh, karena tidak menyebutkan konteks apa pun.
ilkkachu

@Arcticooling Saya telah menambahkan sebuah paragraf, jika hanya untuk memperjelas pengertian Anda semoga - "mengeksekusi set bit" karena ...,...,...tidak benar-benar berarti apa-apa, dan juga "set bit eksekusi tidak valid" (apa yang tidak valid tentang itu?).
Stephen Kitt

5

Dari man chmod:

Huruf rwxXst memilih bit mode file untuk pengguna yang terpengaruh: baca (r), tulis (w), jalankan (atau cari direktori) (x), jalankan / cari hanya jika file tersebut adalah direktori atau sudah memiliki izin eksekusi untuk beberapa pengguna (X), atur ID pengguna atau grup pada eksekusi, bendera penghapusan terbatas atau bit sticky (t).

(penekanan milikku).

Namun itu tidak terlalu memperjelasnya. Artikel ini memiliki dua aturan yang menjelaskan apa yang dilakukannya:


Sebagai contoh, kami mengeluarkan perintah chmod berikut pada direktori:

# chmod -R u=rwX,g=rX,o=rX testdir/`  

Menggunakan huruf besar X, perintah di atas menetapkan atribut yang dapat dieksekusi sesuai dengan dua aturan berikut:

  1. Jika file tersebut adalah direktori, maka ia menetapkan atribut yang dapat dieksekusi untuk pemilik, grup, dan dunia, yang berarti bahwa mereka dapat memasuki direktori ini.

  2. Jika file tersebut adalah file biasa, maka ia akan menambahkan atribut yang dapat dieksekusi ke izinnya, jika file tersebut sudah memiliki beberapa bit eksekusi. Jika file tidak memiliki bit eksekusi, tidak ada yang akan ditambahkan.

Menggunakan huruf kecil x tidak mungkin mencapai hasil ini hanya dengan satu perintah.


Harapan yang memperjelas penggunaan dari X .


1

Tolong jangan abaikan jawaban ini. Itu hanya apa yang saya mengerti dari jawaban Stephen Kitt di atas, yang saya terima benar.


1) Huruf X seperti dalam a=rwXmengatakan: Semua direktori yang ditemukan akan mendapatkan x dan semua file biasa ditemukan yang memiliki setidaknya 1 bit yang dapat dieksekusi di salah satu dari tiga grup izin, juga akan mendapatkan x dalam ketiga grup.

2) Kombo dari a-x(yang memastikan bahwa semua file kehilangan bit eksekusi), dan yang berikutnya a=rwXmengatakan: Dapatkan bit baca dan tulis di mana-mana, dan bit eksekusi hanya pada direktori.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.