'chmod u + x' so với 'chmod + x'


112

Sự khác biệt giữa chmod u+xvà chỉ là chmod +xgì? 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 udường như không có bất kỳ ảnh hưởng.

Câu trả lời:


149

Các trang nam của trang chmodbìa đó.

  • u là viết tắt của người dùng.
  • g là viết tắt của nhóm.
  • o là viết tắt của người khác.
  • một chữ viết tắt của tất cả.

Điều đó có nghĩa là chmod u+x somefilesẽ chỉ cấp cho chủ sở hữu quyền thực thi tệp đó trong khi đó chmod +x somefilecũ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.


Tôi có một câu hỏi nhỏ, sự khác biệt giữa a + x và giả sử 111. Nó làm cho cả hai có thể thực thi được
TheBro21

Đó là bởi vì 1 là ký hiệu bát phân tượng trưng cho sự cho phép thực thi. 111 có nghĩa là thực thi cho người dùng, nhóm và khác.
Octavian Damiean

Câu trả lời tuyệt vời
m4heshd

Hiệu ứng umask rất quan trọng, tạo nên chmod +x filesự khác biệt chmod a+x file- xem câu trả lời của Ravexina để biết chi tiết.
Cinnam

19

Chỉ cần làm +xsẽ á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.


Tôi hứa rằng tôi đã kiểm tra hướng dẫn trước nhưng không thấy nó vì tôi đã bỏ qua phần mô tả và nhảy xuống các tùy chọn. Bây giờ tôi nhìn thấy chúng :-)
Nathan Schwermann

14

Yêu cầu

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.


Phiên bản ngắn

  • chmod +xbằng chmod ugo+x(Dựa trên umaskgiá trị)
  • chmod a+xbằng chmod ugo+x(Không xem xét umaskgiá trị)

Giải trình

Kết quả chmod a+xlà 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 +xmột chút khó khăn, nó nói umaskgiá trị sử dụng và dựa trên giá trị đó thêm xvào mọi người được phép.

Vì vậy, nếu umaskmôi trường của tôi là 0002:

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

Nó sẽ thêm xvà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+xhoặ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+xvà đầu ra của umask -S?

Bây giờ, hãy thay đổi umaskshell 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 +xlà bây giờ bằng chmod u+x,g+xhoặc chmod ug+x.


Câu hỏi thời gian!

Chuyện gì xảy ra nếu tôi chạy chmod +wtrê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 usergroupcủa tệp vì 3 cũng loại bỏ quyền ghi (2).


Thêm

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

7

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 +xhoặ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.


xin lỗi nhưng điều này quá không làm việc cho tôi Tôi đã thử nó với sudo và không làm cho nó hoạt động trên máy tính của tôi. Askubfox.com/questions/178231/how-to-set- allow
Anirudha Gupta

@AnkitGupta Tôi không chắc bạn đang nói gì. Nhận xét của tôi không nhằm khắc phục sự cố trong một câu hỏi và trả lời khác. Thay vào đó, hãy thử yêu cầu làm rõ câu trả lời. Chỉnh sửa câu hỏi của bạn để nói những gì bạn đã cố gắng. Hiển thị đầu ra.
belacqua

1
  • chmod u+x filecó 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 filecó 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 umasksau đó á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 chmodbị bỏ qua umaskvà 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.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.