Apa perbedaan antara chmod u+x
dan adil chmod +x
? Saya telah melihat banyak tutorial yang mengatakan digunakan u+x
untuk membuat skrip dapat dieksekusi. Namun, menghilangkan u
itu tampaknya tidak berpengaruh.
Apa perbedaan antara chmod u+x
dan adil chmod +x
? Saya telah melihat banyak tutorial yang mengatakan digunakan u+x
untuk membuat skrip dapat dieksekusi. Namun, menghilangkan u
itu tampaknya tidak berpengaruh.
Jawaban:
Halaman manual chmod
sampul itu.
Itu berarti bahwa chmod u+x somefile
hanya akan memberikan pemilik izin eksekusi file chmod +x somefile
yang 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.
chmod +x file
berbeda dari chmod a+x file
- lihat jawaban Ravexina untuk detailnya.
Cukup melakukan +x
akan menerapkannya pada semua flag: [u] ser, [g] roup, [o] thers.
Ketikkan man chmod
untuk informasi lebih lanjut.
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.
chmod +x
sama dengan chmod ugo+x
(Berdasarkan umask
nilai)chmod a+x
sama dengan chmod ugo+x
(Tanpa mempertimbangkan umask
nilai)Hasilnya chmod a+x
adalah mengatur bit yang dapat dieksekusi untuk semua orang (Pemilik, Grup, Lainnya), mudah bukan?
Namun dengan chmod +x
itu sedikit rumit, ia mengatakan umask
nilai pakai dan berdasarkan nilai itu tambahkan x
ke semua orang yang diizinkan.
Jadi jika umask
lingkungan saya adalah 0002
:
$ umask
0002
$ umask -S
u=rwx,g=rwx,o=rx
Ini akan menambah x
pengguna (pemilik), grup, dan lainnya, dalam situasi ini (yang merupakan situasi default untuk sebagian besar sistem) persis seperti chmod ugo+x
atau 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+x
dan output umask -S
?
Sekarang mari kita ubah umask
shell 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 +x
sekarang sama dengan chmod u+x,g+x
atau chmod ug+x
.
Apa yang terjadi jika saya menjalankan chmod +w
pada file setelah pengaturan umask
ke 0003
?
Sama seperti sebelumnya, itu hanya mempengaruhi user
dan group
dari file karena 3 juga menghilangkan izin menulis (2).
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
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 +x
atau 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.
chmod u+x file
berarti menambahkan bit yang dapat dieksekusi ke pemilik file sambil mengabaikan umask
(mod Anda akan ditetapkan, tidak ada pertanyaan).
chmod +x file
berarti menambahkan bit yang dapat dieksekusi ke pemilik, grup dan yang lain sambil mempertimbangkan umask
(Pertama periksa dengan umask
kemudian 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 umask
untuk "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 chmod
diabaikan umask
dan file1 mendapat bit executable untuk pemiliknya tetapi yang kedua tidak melakukan apa-apa karena mempertimbangkan nilai umask.