Chmod -u làm gì?


19

Tình cờ tôi chạy chmod -u filenamevà nó đã gỡ bỏ tất cả các quyền mà tôi có filename.

Trang người đàn ông không tham chiếu một -utùy chọn. Thử nghiệm tôi đã có thể kết luận rằng nó loại bỏ không phải tất cả các quyền, mà chỉ cần đọc và thực thi quyền truy cập, giữ nguyên quyền truy cập ghi.

Vì vậy, những gì làm chính xác?


Kết luận của tôi ở trên là sai, bây giờ tôi nghĩ rằng những gì nó làm là loại bỏ các quyền mà chủ sở hữu có, khỏi tất cả các danh mục.


Tôi nghĩ rằng hành vi này là tương tự a=u, chỉ có nó là -thay vì =acó thể được loại bỏ giống như nó có thể với, ví dụ , a+x.


6
+1 để hỏi một câu hỏi cơ bản không có trong trang man.

1
"Định dạng của một chế độ mang tính biểu tượng được [ugoa...][[-+=][perms...]...], mà perms là một trong hai số không hay nhiều ký tự từ tập rwxXst, hoặc một chữ cái từ tậpugo " (trang man chmod GNU); POSIX khá tối nghĩa, nhưng định nghĩa sản xuất "permcopy" cho cùng một hiệu ứng.
Michael Homer

1
@MichaelHomer Nó không nói những gì nó làm.
y_wc

1
@y_wc "Thay vì một hoặc nhiều chữ cái trong số này, bạn có thể chỉ định chính xác một trong các chữ cái ugo : quyền được cấp cho người dùng sở hữu tệp ( u), quyền được cấp cho người dùng khác là thành viên của nhóm tệp ( g) và các quyền được cấp cho người dùng thuộc cả hai loại trước ( o). "
Michael Homer

1
Vâng, tôi đọc nó. Tôi không thấy rằng nó đề cập đến những gì nó làm. Nó nói rằng tôi có thể chỉ định một trong những chữ cái đó. Chẳng hạn u, việc chỉ định, tôi sẽ chỉ định các quyền được cấp cho người dùng sở hữu tệp. Nhưng nó không nói những gì nó làm. Không xác định nghĩa là gì?
y_wc

Câu trả lời:


19

Đây không phải là một tùy chọn, mà là một cách tiêu chuẩn (nhưng không phổ biến) để chỉ định các quyền. Nó có nghĩa là để loại bỏ ( -) các điều khoản liên quan đến chủ sở hữu tập tin ( u), cho tất cả người dùng (không trước u, ghoặc o). Điều này được ghi lại trong trang người đàn ông.

Trang man của GNU chmod tài liệu này là:

Định dạng của chế độ biểu tượng là [ugoa...][[-+=][perms...]...], trong đó permscó 0 hoặc nhiều chữ cái trong tập hợp rwxXsthoặc một chữ cái từ tập hợp ugo

và sau đó

Thay vì một hoặc nhiều chữ cái này, bạn có thể chỉ định chính xác một trong các chữ cái ugo: các quyền được cấp cho người dùng sở hữu tệp ( u), các quyền được cấp cho những người dùng khác là thành viên của nhóm ( g) và quyền được cấp cho người dùng thuộc cả hai loại trước ( o)

Vì vậy, -ucó nghĩa là xóa ( -) bất kỳ quyền nào hiện đang được bật cho chủ sở hữu ( u) cho mọi người (tương đương với a-u, ngoại trừ việc tôn vinh các ô hiện tại). Mặc dù điều đó thường không hữu ích lắm, nhưng tương tự chmod +uđôi khi sẽ là, sao chép các quyền từ chủ sở hữu sang người khác khi hoạt động đệ quy, chẳng hạn.


cũng được ghi lại trong POSIX , nhưng được xác định rõ ràng hơn: đặc tả quyền là rộng rãi who[+-=]perms(hoặc một số) và tác dụng của những thứ đó được chỉ định thêm:

Các biểu tượng permcopy u, gotrách nhiệm đại diện cho quyền hiện hành liên quan đến việc sử dụng, nhóm, và các bộ phận khác của các bit chế độ tập tin tương ứng. Đối với phần còn lại của phần này, permđề cập đến các thiết bị không đầu cuối permpermcopytrong ngữ pháp.

và sau đó

-

... Nếu ai không được chỉ định, các bit chế độ tệp được biểu thị bằng perm cho chủ sở hữu, nhóm và các quyền khác, ngoại trừ các bit có bit tương ứng trong mặt nạ tạo chế độ tệp của quy trình gọi, sẽ bị xóa.


Cảm ơn, Michael. Tài liệu POSIX rất thuyết phục. GNU tuy nhiên ... Xin vui lòng xem nhận xét này của tôi. Tôi không thấy những gì diễn ra sau "Vì vậy" theo sau những gì trước đó. permscó thể u, mà tôi đã nhận. Có, uchỉ định các quyền hoặc chủ sở hữu. Nhưng làm thế nào để nó tuân theo việc -uloại bỏ các quyền của chủ sở hữu (mô-đun umask) khỏi tất cả người dùng?
y_wc

Bởi vì đó là điều -luôn làm: nó loại bỏ các quyền được chỉ định khỏi lớp người dùng được chỉ định. -ulà chính xác tương tự -whoặc (gần hơn) với ugo-u.
Michael Homer

Tôi đã định nói rằng tôi đã không đến đây để thảo luận về tài liệu và tôi rất vui khi hiểu những gì đang diễn ra, nhưng các tài liệu chỉ cần nhấp vào. Cảm ơn.
y_wc

Tôi có thể làm phiền bạn với một chmodcâu hỏi tài liệu khác ? Hãy cho tôi biết nếu bạn nghĩ rằng điều này xứng đáng một câu hỏi riêng biệt. "Và = làm cho chúng được thêm vào và khiến các bit không được đề cập bị loại bỏ ngoại trừ việc các bit ID người dùng và nhóm ID chưa được đề cập của thư mục không bị ảnh hưởng." chmod u=rx directorysẽ để lại quyền của chủ sở hữu như rwx. Nhưng đó không phải là những gì xảy ra, thay vào đó họ trở thành mong đợi r-x. Có phải tôi đang hiểu sai đôi khi?
y_wc

Điều đó nói rằng các sbit setuid / setgid ( ) bị bỏ lại một mình nếu bạn không đề cập đến chúng và bất kỳ thứ gì khác mà bạn không chỉ định sẽ bị xóa.
Michael Homer

2

Câu trả lời hơi giống với /unix//a/429424/255251 .

chmod -u file_name

không loại bỏ tất cả sự cho phép, nhưng nó xem xét umaskgiá trị.

umask
0022
ls -l file
-rwxrwxrwx 1 user user 4 Feb 25 15:17 file
chmod -u file
chmod: file: new permissions are ----w--w-, not ---------
ls -l file
-----w--w- 1 user user 4 Feb 25 15:17 file

Bây giờ thay đổi giá trị umask

umask 777
chmod 777 file
chmod -u file
chmod: file: new permissions are rwxrwxrwx, not ---------
ls -l file
-rwxrwxrwx 1 user user 4 Feb 25 15:17 file

2
Hướng dẫn, tốt để biết và rất hữu ích, nhưng tôi nghĩ rằng đây không thực sự là vấn đề, mặc dù nó có liên quan rất nhiều. Cảm ơn.
y_wc
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.