Tại sao tên thư mục chmod 0000 sẽ không xóa các bit đặc biệt trên thư mục?


8
$ mkdir test 
$ chmod 0000 test 
$ ls -la | grep test | awk '{print $1}'
d---------.
$ chmod 6000 test
$ ls -la | grep test | awk '{print $1}'
d--S--S---.
$ chmod 0000 test
$ ls -la | grep test | awk '{print $1}'
d--S--S---.

Tôi không chắc tại sao chmod 0000 testsẽ không xóa tất cả các bit cho phép. Tôi không nhận được gì ở đây? Tôi đã thử so sánh với một máy tính và chúng không khớp. Hành vi tương tự cũng được nhìn thấy trên máy chủ mà tôi đã sử dụng, RHEL và máy của riêng tôi, Ubuntu. Tôi đã đọc về điều này một thời gian và dành quá nhiều thời gian để cố gắng hiểu.

Tôi gặp vấn đề này khi thử tất cả các biểu tượng cho bát phân đầu tiên, chưa bao giờ sử dụng chmod với 4 octals trước đó. Nó dường như để xóa bit dính, tuy nhiên.

Câu trả lời:


8

0000 được coi là mơ hồ, vì nó có thể chỉ có nghĩa là 000, cộng với số 0 đứng đầu vì nó là số bát phân.

http://lists.gnu.org/archive/html/orms-coreutils/2011-03/msg00162.html

0755 không rõ ràng - không rõ ràng với những người rõ ràng đang sử dụng printf% # 3o để tạo ra chuỗi bát phân 3 chữ số có đầu 0 - Tôi không nghĩ chúng ta có thể thay đổi điều này.

Chủ đề thảo luận coreutils đó bắt đầu bằng việc ai đó trích dẫn trang man chmod lưu ý giới hạn này:

bạn có thể đặt (nhưng không xóa) các bit bằng chế độ số.

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.