Mengapa chmod + w tidak memberikan izin tertulis kepada orang lain (o)

18

Ketika saya menjalankannya chmod +w filenametidak memberikan izin untuk menulis other, itu hanya memberikan izin untuk menulis userdan group.

Setelah menjalankan perintah ini

chmod +w testfile.txt

menjalankan ls -l testfile.txtcetakan

-rw-rw-r-- 1 ravi ravi 20 Mar 10 18:09 testfile.txt

tetapi dalam kasus +rdan +xberfungsi dengan baik.

Saya tidak ingin menggunakan chmod ugo+w filename.

Ravi Sevta
sumber
1
Jika Anda tidak ingin menggunakan ugo, gunakan a.
muru
ya, tetapi saya hanya ingin tahu mengapa +wtidak bekerja.
Ravi Sevta
Itu sebabnya saya meninggalkan dua komentar.
muru
@muru. Anda mengklaim dalam askubuntujawaban Anda bahwa Anda merujuk di atas bahwa "Perilaku ini diamanatkan POSIX, dan karenanya, bukan bug". Harap diperhatikan bahwa teks Penggunaan Aplikasi POSIX tidak normatif dan karenanya tidak diamanatkan oleh POSIX.
fpmurphy

Jawaban:

26

Situasi spesifik Anda

Dalam situasi spesifik Anda, kami dapat menebak bahwa saat umaskini Anda 002(ini adalah nilai standar umum) dan ini menjelaskan kejutan Anda.

Dalam situasi khusus di mana umasknilainya 002 (semua angka oktal).

  • +rberarti ugo+rkarena 002 & 444merupakan 000, yang memungkinkan semua bit menjadi set
  • +xberarti ugo+xkarena 002 & 111merupakan 000, yang memungkinkan semua bit menjadi set
  • tapi +wberarti ug+wkarena 002 & 222merupakan 002, yang mencegah "o" bit menjadi set.

Contoh lainnya

  • Dengan umask 022 +wberarti u+w.
  • Dengan umask 007 +rwxberarti ug+rwx.
  • Dengan umask 077 +rwxberarti u+rwx.

Apa yang cocok dengan harapan Anda

Ketika Anda mengubah umaskke 000, dengan mengeksekusi

umask 000

di terminal Anda, lalu

chmod +w file

akan mengatur izin menjadi ugo + w.

Catatan samping

Seperti yang disarankan oleh ilkkachu, perhatikan itu umask 000tidak berarti bahwa semua orang dapat membaca dan menulis semua file Anda.

Tetapi umask 000berarti setiap orang yang memiliki semacam akses ke akun pengguna apa pun di komputer Anda (yang mungkin termasuk program yang menjalankan layanan server ofc) dapat membaca dan menulis semua file yang Anda buat dengan topeng itu aktif dan tidak berubah (jika rantai yang mengandung direktori hingga ke root juga memungkinkan mereka).

Prvt_Yadav
sumber
4
umask 000 berarti setiap orang yang memiliki semacam akses ke akun pengguna di komputer Anda (yang mungkin termasuk program yang menjalankan layanan server ofc) dapat membaca dan menulis semua file yang Anda buat dengan topeng itu aktif dan tidak berubah, untuk menjadi jelas
StarWeaver
4
"+ r berarti ugo = r" - tidak, tidak, itu berarti mengatur rbit untuk pihak-pihak di mana umask mengizinkannya. Ini dengan jelas dinyatakan dalam manual misalnya chmod GNU dan chmod FreeBSD, serta standar. Sama untuk +x. Untuk +wAnda benar, untuk kasus umask tertentu.
ilkkachu
4
Juga, mengatur umask ke 0 tidak berarti bahwa semua orang dapat membaca dan menulis semua file Anda, karena banyak aplikasi membuat file yang sangat pribadi dengan mode 0600, yang berarti bahwa grup dan yang lain tidak mendapatkan akses, terlepas dari umask.
ilkkachu
@ilkkachu + r berarti ugo = r, ini terkait dengan situasi yang dijelaskan dalam pertanyaan. Itu tidak umum.
Prvt_Yadav
2
@ Debian_yadav, itulah intinya: itu umaskadalah bagian penting dari bagaimana +rberperilaku, bukan sidenote. Selain itu, bahkan dengan asumsi umask 002, chmod +rtidak berarti chmod ugo=r, itu berartichmod ugo+r
ilkkachu
24

Dengan:

chmod +<perms>

perms ditambahkan ke pengguna , grup dan lainnya tetapi dengan umask masih berlaku. Itu memastikan file tidak diberikan izin lebih dari file yang baru dibuat.

Jika Anda ingin menambahkan izin ke pengguna , grup , dan lainnya terlepas dari umask, gunakan

chmod a+<perms>

yang merupakan kependekan dari

chmod ugo+<perms>
Stéphane Chazelas
sumber
Ini berarti bahwa + x dan a + x tidak sama.
Prvt_Yadav
1
Saya ingin memiliki tautan: man7.org/linux/man-pages/man1/chmod.1.html "Jika tidak ada yang diberikan, efeknya adalah seolah-olah (a) diberikan, tetapi bit yang diatur dalam umask tidak terpengaruh. "
tehnicaorg
0

Anda perlu menentukan kepada siapa Anda memberikan izin, seperti other, dengan menggunakanchmod o+w testfile.txt

Jaken551
sumber
1
ya, tapi saya pikir +wmemberikan izin kepada semua (pengguna, grup dan lainnya).
Ravi Sevta
Untuk memberikan izin kepada semua pengguna, gunakan chmod a+w testfile.txt. Gunakan uuntuk pengguna, guntuk grup, ountuk orang lain, dan auntuk semua.
Jaken551
jika chmod a+w filename, chmod +w filenamedan chmod ugo+w filenamemerupakan alternatif satu sama lain maka mengapa tidak hanya menggunakan+w
Ravi Sevta