Sự khác biệt giữa chmod u+x
và chỉ là chmod +x
gì? Tôi đã thấy rất nhiều hướng dẫn sử dụng u+x
để làm cho các kịch bản có thể thực thi được. Tuy nhiên, bỏ qua u
dường như không có bất kỳ ảnh hưởng.
Sự khác biệt giữa chmod u+x
và chỉ là chmod +x
gì? Tôi đã thấy rất nhiều hướng dẫn sử dụng u+x
để làm cho các kịch bản có thể thực thi được. Tuy nhiên, bỏ qua u
dường như không có bất kỳ ảnh hưởng.
Câu trả lời:
Các trang nam của trang chmod
bìa đó.
Điều đó có nghĩa là chmod u+x somefile
sẽ chỉ cấp cho chủ sở hữu quyền thực thi tệp đó trong khi đó chmod +x somefile
cũng giống như chmod a+x somefile
.
Trang người đàn ông chmod nói:
Các định dạng của một chế độ tượng trưng là
[ugoa...][[+-=][rwxXstugo...]...][,...]
. Nhiều thao tác tượng trưng có thể được đưa ra, phân tách bằng dấu phẩy.Một sự kết hợp của các chữ cái 'ugoa' kiểm soát quyền truy cập của người dùng vào tệp sẽ được thay đổi: người dùng sở hữu nó (u), những người dùng khác trong nhóm của tệp (g), những người dùng khác không thuộc nhóm của tệp (o), hoặc tất cả người dùng (a). Nếu không có cái nào trong số này được đưa ra, hiệu ứng như thể 'a' đã được đưa ra, nhưng các bit được đặt trong ô không bị ảnh hưởng.
chmod +x file
sự khác biệt chmod a+x file
- xem câu trả lời của Ravexina để biết chi tiết.
Chỉ cần làm +x
sẽ áp dụng nó cho tất cả các cờ: [u] ser, [g] roup, [o] thers.
Nhập man chmod
để biết thêm thông tin.
Trước hết tôi khuyên bạn nên đọc những câu hỏi này và câu trả lời được liên kết dưới đây:
Nó giúp bạn hiểu tất cả các phần cần thiết bạn cần biết.
chmod +x
bằng chmod ugo+x
(Dựa trên umask
giá trị)chmod a+x
bằng chmod ugo+x
(Không xem xét umask
giá trị)Kết quả chmod a+x
là thiết lập bit thực thi cho mọi người (Chủ sở hữu, Nhóm, Những người khác), dễ dàng phải không?
Tuy nhiên, với chmod +x
một chút khó khăn, nó nói umask
giá trị sử dụng và dựa trên giá trị đó thêm x
vào mọi người được phép.
Vì vậy, nếu umask
môi trường của tôi là 0002
:
$ umask
0002
$ umask -S
u=rwx,g=rwx,o=rx
Nó sẽ thêm x
vào người dùng (chủ sở hữu), nhóm và những người khác, trong tình huống này (là tình huống mặc định cho hầu hết các hệ thống), nó giống hệt chmod ugo+x
hoặc giống như chmod a+x
, hoặc ở dạng dài hơn:
chmod u+x,g+x,o+x
Bạn có thể nhận ra kết nối giữa chmod u+x,g+x,o+x
và đầu ra của umask -S
?
Bây giờ, hãy thay đổi umask
shell hiện tại thành 0003
:
$ umask 0003
$ umask
0003
$ umask -S
u=rwx,g=rwx,o=r
Như bạn có thể thấy bây giờ chỉ có chủ sở hữu và nhóm sẽ nhận được bit thực thi chứ không phải các bit khác. Nó có nghĩa chmod +x
là bây giờ bằng chmod u+x,g+x
hoặc chmod ug+x
.
Chuyện gì xảy ra nếu tôi chạy chmod +w
trên một tập tin sau khi cài đặt umask
để 0003
?
Tương tự như trước đây, nó chỉ ảnh hưởng user
và group
của tệp vì 3 cũng loại bỏ quyền ghi (2).
Nó có tác dụng tương tự khi bạn loại bỏ một chút như 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
sẽ làm cho tệp có thể thực thi được cho người dùng của bạn (nó sẽ chỉ thêm nó cho người dùng của bạn, mặc dù nó có thể được thực thi bởi chủ sở hữu nhóm hoặc "người khác").
chmod +x
hoặc chmod a+x
('tất cả cộng với bit thực thi') làm cho mọi người có thể thực hiện được tệp.
Nếu bạn làm điều này với một thư mục, thay vào đó, nó làm cho thư mục có thể tìm kiếm được. Tức là, bạn có thể liệt kê nội dung của một thư mục mà bạn có quyền + x trên.
chmod u+x file
có nghĩa là thêm bit thực thi vào chủ sở hữu của tệp trong khi bỏ qua umask
(Mod của bạn sẽ được đặt, không có câu hỏi).
chmod +x file
có nghĩa là thêm bit thực thi cho chủ sở hữu, nhóm và những người khác trong khi xem xét umask
(Kiểm tra đầu tiên umask
sau đó áp dụng các mod, nó có thể có các hiệu ứng khác nhau dựa trên giá trị của umask).
hãy tạo hai tệp:
$ 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
Bây giờ tôi đặt thành umask
"111" để loại bỏ các bit thực thi : 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
Như bạn có thể thấy phần chmod
bị bỏ qua umask
và file1 có bit thực thi cho chủ sở hữu của nó, tuy nhiên phần thứ hai không làm gì cả vì nó đang xem xét giá trị của umask.