'chmod u + x' versus 'chmod + x'

113

Apa perbedaan antara chmod u+xdan adil chmod +x? Saya telah melihat banyak tutorial yang mengatakan digunakan u+xuntuk membuat skrip dapat dieksekusi. Namun, menghilangkan uitu tampaknya tidak berpengaruh.

Nathan Schwermann
sumber

Jawaban:

150

Halaman manual chmodsampul itu.

  • kamu adalah singkatan dari pengguna.
  • g adalah singkatan dari group.
  • o berarti orang lain.
  • a berdiri untuk semua.

Itu berarti bahwa chmod u+x somefilehanya akan memberikan pemilik izin eksekusi file chmod +x somefileyang sama dengan chmod a+x somefile.

Halaman manual chmod mengatakan:

Format mode simbolik adalah [ugoa...][[+-=][rwxXstugo...]...][,...]. Beberapa operasi simbolik dapat diberikan, dipisahkan dengan koma.

Kombinasi huruf 'ugoa' mengontrol mana akses pengguna ke file akan diubah: pengguna yang memilikinya (u), pengguna lain dalam grup file (g), pengguna lain yang tidak dalam grup file (o), atau semua pengguna (a). Jika tidak ada yang diberikan, efeknya adalah seolah-olah 'a' diberikan, tetapi bit yang diatur dalam umask tidak terpengaruh.

Oktami Damiean
sumber
Saya punya sedikit pertanyaan, apa perbedaan antara + x dan katakanlah 111. Itu membuat keduanya dapat dieksekusi
TheBro21
Itu karena 1 adalah notasi oktal yang merupakan singkatan dari izin eksekusi. 111 berarti dapat dieksekusi untuk pengguna, grup, dan lainnya.
Octavian Damiean
Jawaban
bersihnya bagus
Efek umask penting, membuat chmod +x fileberbeda dari chmod a+x file- lihat jawaban Ravexina untuk detailnya.
Cinnam
19

Cukup melakukan +xakan menerapkannya pada semua flag: [u] ser, [g] roup, [o] thers.

Ketikkan man chmoduntuk informasi lebih lanjut.

matpie
sumber
Saya berjanji saya memeriksa manualnya terlebih dahulu tetapi tidak melihatnya karena saya melewatkan deskripsi dan melompat ke opsi. Saya melihat mereka sekarang :-)
Nathan Schwermann
14

Persyaratan

Pertama-tama saya sarankan Anda untuk membaca pertanyaan-pertanyaan ini dan jawaban yang terhubung di bawah ini:

Ini membantu Anda memahami semua bagian yang perlu Anda ketahui.


Versi pendek

  • chmod +xsama dengan chmod ugo+x(Berdasarkan umasknilai)
  • chmod a+xsama dengan chmod ugo+x(Tanpa mempertimbangkan umasknilai)

Penjelasan

Hasilnya chmod a+xadalah mengatur bit yang dapat dieksekusi untuk semua orang (Pemilik, Grup, Lainnya), mudah bukan?

Namun dengan chmod +xitu sedikit rumit, ia mengatakan umasknilai pakai dan berdasarkan nilai itu tambahkan xke semua orang yang diizinkan.

Jadi jika umasklingkungan saya adalah 0002:

$ umask
0002
$ umask -S
u=rwx,g=rwx,o=rx

Ini akan menambah xpengguna (pemilik), grup, dan lainnya, dalam situasi ini (yang merupakan situasi default untuk sebagian besar sistem) persis seperti chmod ugo+xatau sama dengan chmod a+x, atau dalam bentuk yang lebih bertele-tele:

chmod u+x,g+x,o+x

Bisakah Anda melihat hubungan antara chmod u+x,g+x,o+xdan output umask -S?

Sekarang mari kita ubah umaskshell yang sekarang menjadi 0003:

$ umask 0003
$ umask
0003
$ umask -S
u=rwx,g=rwx,o=r

Seperti yang Anda lihat sekarang, hanya pemilik dan grup yang akan mendapatkan bit yang dapat dieksekusi dan bukan yang lain. Artinya chmod +xsekarang sama dengan chmod u+x,g+xatau chmod ug+x.


Waktu bertanya!

Apa yang terjadi jika saya menjalankan chmod +wpada file setelah pengaturan umaskke 0003?

Sama seperti sebelumnya, itu hanya mempengaruhi userdan groupdari file karena 3 juga menghilangkan izin menulis (2).


Bonus

Ini memiliki efek yang sama ketika Anda menghapus sedikit seperti chmod -w:

$ mkdir test
$ stat -c %A test
drwxrwxr-x
$ umask
0002
$ chmod +w test
$ stat -c %A test
drwxrwxr-x
$ chmod a+w test
$ stat -c %A test
drwxrwxrwx
$ chmod -w test
chmod: test/: new permissions are r-xr-xrwx, not r-xr-xr-x
$ stat -c %A test
dr-xr-xrwx
Ravexina
sumber
7

chmod u+x akan membuat file dapat dieksekusi untuk pengguna Anda (itu hanya akan menambahkannya untuk pengguna Anda, meskipun mungkin sudah dapat dieksekusi oleh pemilik grup, atau "lainnya").

chmod +xatau chmod a+x('semua plus bit yang dapat dieksekusi') membuat file dapat dieksekusi oleh semua orang.

Jika Anda melakukan ini ke direktori, itu membuat direktori dapat dicari. Yaitu, Anda dapat membuat daftar isi direktori yang Anda memiliki izin + x.

belacqua
sumber
maaf tapi ini juga tidak berhasil untukku. Saya sudah mencobanya dengan sudo dan tidak berhasil di komputer saya. askubuntu.com/questions/178231/how-to-set-permission-in-ubuntu
Anirudha Gupta
@AnkitGupta Saya tidak yakin apa yang Anda katakan. Komentar saya tidak dimaksudkan untuk memperbaiki masalah dalam tanya jawab yang berbeda. Coba minta klarifikasi untuk jawaban di sana. Edit pertanyaan Anda untuk mengatakan apa yang telah Anda coba. Tampilkan output.
belacqua
1
  • chmod u+x fileberarti menambahkan bit yang dapat dieksekusi ke pemilik file sambil mengabaikan umask(mod Anda akan ditetapkan, tidak ada pertanyaan).

  • chmod +x fileberarti menambahkan bit yang dapat dieksekusi ke pemilik, grup dan yang lain sambil mempertimbangkan umask(Pertama periksa dengan umaskkemudian menerapkan mod, mungkin memiliki efek yang berbeda berdasarkan nilai umask).


mari kita buat dua file:

$ touch file1 file2
$ ls -l file1 file2
-rw-rw-rw- 1 ravexina ravexina 0 Aug  5 01:45 file1
-rw-rw-rw- 1 ravexina ravexina 0 Aug  5 01:45 file2

Sekarang saya mengatur umaskuntuk "111" untuk menghapus bit executable: umask 111.

$ chmod u+x file1
$ chmod  +x file2
$ ls -l file1 file2
-rwxrw-rw- 1 ravexina ravexina 0 Aug  5 01:47 file1
-rw-rw-rw- 1 ravexina ravexina 0 Aug  5 01:47 file2

Seperti yang Anda lihat chmoddiabaikan umaskdan file1 mendapat bit executable untuk pemiliknya tetapi yang kedua tidak melakukan apa-apa karena mempertimbangkan nilai umask.

Ravexina
sumber