Apa yang dilakukan chmod -u?

19

Secara tidak sengaja saya berlari chmod -u filenamedan menghapus semua izin yang saya miliki filename.

Halaman manual tidak merujuk -uopsi. Bereksperimen saya dapat menyimpulkan bahwa itu menghapus tidak semua izin, tetapi hanya membaca dan mengeksekusi akses, meninggalkan akses tulis yang utuh.

Jadi apa tepatnya yang dilakukan?


Kesimpulan saya di atas salah, saya sekarang berpikir bahwa yang dilakukannya adalah menghapus izin yang dimiliki pemilik, dari semua kategori.


Saya pikir perilaku analog dengan a=u, hanya itu -bukan =dan adapat dijatuhkan hanya karena dapat dengan, misalnya, a+x.

y_wc
sumber
6
+1 untuk mengajukan pertanyaan dasar yang tidak ada di halaman manual.
1
"Format mode simbolik adalah [ugoa...][[-+=][perms...]...], di mana perms nol atau lebih huruf dari set rwxXst, atau satu huruf dari setugo " (halaman manual GNU chmod); POSIX cukup tidak jelas, tetapi mendefinisikan produksi "permcopy" untuk efek yang sama.
Michael Homer
1
@MichaelHomer Tidak mengatakan apa yang dilakukannya.
y_wc
1
@y_wc "Alih-alih satu atau lebih dari surat-surat ini, Anda dapat menentukan dengan tepat salah satu huruf ugo : izin yang diberikan kepada pengguna yang memiliki file ( u), izin yang diberikan kepada pengguna lain yang merupakan anggota grup file ( g) , dan izin yang diberikan kepada pengguna yang tidak satu pun dari dua kategori sebelumnya ( o). "
Michael Homer
1
Ya, saya membacanya. Saya tidak melihat bahwa itu menyebutkan apa yang dilakukannya. Dikatakan bahwa saya dapat menentukan salah satu dari surat-surat itu. Menentukan, misalnya u, saya akan menentukan izin yang diberikan kepada pengguna yang memiliki file. Tapi itu tidak mengatakan apa yang dilakukannya. Apa yang dimaksud dengan even even?
y_wc

Jawaban:

19

Ini bukan opsi, tetapi cara standar (tetapi tidak umum) untuk menentukan izin. Ini berarti untuk menghapus ( -) izin terkait dengan pemilik file ( u), untuk semua pengguna (tidak ada sebelumnya u, gatau o). Ini adalah didokumentasikan di halaman manual.

Halaman manual GNU chmod mendokumentasikan ini sebagai:

Format mode simbolis adalah [ugoa...][[-+=][perms...]...], di mana permsnol atau lebih huruf dari himpunan rwxXst, atau satu huruf dari himpunan ugo

dan kemudian

Alih-alih satu atau lebih dari surat-surat ini, Anda dapat menentukan dengan tepat salah satu huruf ugo: izin yang diberikan kepada pengguna yang memiliki file ( u), izin yang diberikan kepada pengguna lain yang merupakan anggota grup file ( g), dan izin yang diberikan kepada pengguna yang tidak satu pun dari dua kategori sebelumnya ( o)

Jadi -uberarti menghapus ( -) izin apa pun yang saat ini diaktifkan untuk pemilik ( u) untuk semua orang (setara dengan a-u, kecuali menghormati umask saat ini). Meskipun itu tidak sering akan sangat berguna, analog chmod +ukadang-kadang akan, untuk menyalin izin dari pemilik kepada orang lain saat beroperasi secara rekursif, misalnya.


Ini juga didokumentasikan dalam POSIX , tetapi lebih jelas didefinisikan: spesifikasi izin secara luas who[+-=]perms(atau angka), dan efeknya ditentukan lebih lanjut:

Simbol permcopy u, gdan oakan mewakili izin saat ini terkait dengan pengguna, kelompok, dan bagian lain dari mode file bit, masing-masing. Untuk sisa bagian ini, permmengacu pada non-terminal permdan permcopytata bahasa.

lalu

-

... Jika siapa yang tidak ditentukan, bit mode file diwakili oleh perm untuk pemilik, grup, dan izin lainnya, kecuali untuk mereka yang bit terkait dalam topeng pembuatan mode file dari proses pemanggilan, harus dihapus.

Michael Homer
sumber
Terima kasih, Michael. Dokumentasi POSIX meyakinkan. GNU namun ... Silakan lihat ini komentar saya. Saya tidak melihat bagaimana apa yang muncul setelah "Jadi" mengikuti dari apa yang sebelumnya. permsbisa u, yang saya dapatkan. Ya, umenentukan izin atau pemiliknya. Tetapi bagaimana cara mengikuti yang -umenghapus izin pemilik (modulus umask) dari semua pengguna?
y_wc
Karena itulah yang -selalu dilakukan: menghapus izin yang ditentukan dari kelas pengguna yang ditentukan. -upersis analog dengan -watau (lebih dekat) ke ugo-u.
Michael Homer
Saya hampir mengatakan bahwa saya tidak datang ke sini untuk membahas dokumentasi dan bahwa saya senang hanya memahami apa yang terjadi, tetapi dokumen hanya diklik. Terima kasih.
y_wc
Bisakah saya menyulitkan Anda dengan chmodpertanyaan dokumentasi lain ? Beri tahu saya jika menurut Anda ini layak untuk pertanyaan terpisah. "dan = menyebabkan mereka ditambahkan dan menyebabkan bit yang tidak disebutkan harus dihapus kecuali bahwa bit ID pengguna dan grup yang tidak disebutkan direktori tidak terpengaruh." Ini, bagi saya, mengatakan bahwa, diberikan direktori yang pemiliknya hanya memiliki akses tulis, chmod u=rx directoryakan meninggalkan izin pemilik sebagai rwx. Tapi bukan itu yang terjadi, malah mereka menjadi yang diharapkan r-x. Apakah saya salah menafsirkan sesuatu?
y_wc
Dikatakan bahwa sbit setuid / setgid ( ) dibiarkan sendiri jika Anda tidak menyebutkannya, dan hal lain yang tidak Anda tentukan dihapus.
Michael Homer
2

Jawabannya sedikit mirip dengan /unix//a/429424/255251 .

chmod -u file_name

tidak menghapus semua izin, tetapi mempertimbangkan umasknilai.

umask
0022
ls -l file
-rwxrwxrwx 1 user user 4 Feb 25 15:17 file
chmod -u file
chmod: file: new permissions are ----w--w-, not ---------
ls -l file
-----w--w- 1 user user 4 Feb 25 15:17 file

Sekarang ubah nilai umask

umask 777
chmod 777 file
chmod -u file
chmod: file: new permissions are rwxrwxrwx, not ---------
ls -l file
-rwxrwxrwx 1 user user 4 Feb 25 15:17 file
Prvt_Yadav
sumber
2
Instruktif, baik untuk mengetahui dan sangat berguna, tapi saya pikir ini tidak benar-benar masalah, meskipun sangat banyak terkait. Terima kasih.
y_wc