Tôi đã thấy một sự thay đổi mã tại nơi làm việc, trong đó các giá trị chế độ được thay đổi từ 777 thành 0777 để làm cho nfs setattr hoạt động. Sự khác biệt trong 2 giá trị là gì?
mkdir()
. 0777 vs 777
Tôi đã thấy một sự thay đổi mã tại nơi làm việc, trong đó các giá trị chế độ được thay đổi từ 777 thành 0777 để làm cho nfs setattr hoạt động. Sự khác biệt trong 2 giá trị là gì?
mkdir()
. 0777 vs 777
Câu trả lời:
Nếu bạn chuyển chúng đến chmod
(chương trình dòng lệnh), không có sự khác biệt. Nhưng trong một chương trình C hoặc tương tự, 0777
là bát phân (ba bộ ba 1 bit, đó là những gì bạn dự định), trong khi đó 777
là số thập phân và đó là một mẫu bit hoàn toàn khác. ( chmod
sẽ diễn giải bất kỳ đối số số nào dưới dạng bát phân, do đó không cần số 0 đứng đầu.)
0777 (bát phân) == binary 0b 111 111 111
== quyền rwxrwxrwx
(== thập phân 511
)
777 (thập phân) == binary 0b 1 100 001 001
== quyền sr----x--x
(== bát phân 1411
)
chmod
lệnh luôn được hiểu là bát phân. Sử dụng chmod 888
sẽ cho một lỗi.
chmod
diễn giải một đối số số là bát phân, bất kể tiền tố. (Nhưng thực sự số đó không có chức năng; chỉ là các chữ số, hay đúng hơn là các bit.)
1777
, bạn cần phải viết 01777
?
1777
được viết bằng 01777
C. (Hoặc bạn có thể viết 1023
, đó là cùng một số thập phân. Nhưng đừng :-)
Bit đầu tiên được sử dụng cho bit dính http://en.wikipedia.org/wiki/Sticky_bit
Nếu bạn đặt quyền sử dụng 4 chữ số, đầu tiên sẽ đặt hoặc xóa bit này.
Câu trả lời thú vị là:
0700
và 700
, như được giải thích trong các câu trả lời khác00700
và 0700
(đối với thư mục)Ít nhất đó là trường hợp cho phiên bản chmod của GNU coreutils, vốn là mặc định trên Linux.
Xem ví dụ này:
$ ls -ld mydir
drws--s--- 4 myuser mygroup 4096 Jul 8 09:27 mydir
$ chmod 0710 mydir ; ls -ld mydir # surprise ahead -- s-bits remain:
drws--s--- 4 myuser mygroup 4096 Jul 8 09:27 mydir
$ chmod 00710 mydir ; ls -ld mydir # _now_ they're gone:
drwx--x--- 4 myuser mygroup 4096 Jul 8 09:27 mydir
Điều này là để tránh việc vô tình xóa các bit setuid / setgid cho các thư mục. Để biết chi tiết, xem tài liệu chmod .
Trong hệ thống Linux, có hai loại quyền có sẵn:
Trong quyền Tệp, chúng tôi đặt quyền trên tệp và thư mục:
Các quyền là:
Trong khi trong sự cho phép đặc biệt, ba loại quyền là:
Trong câu hỏi của bạn, bạn hỏi sự khác biệt là gì, vì vậy không có sự khác biệt nào giữa chmod 777 and 0777
vì có no any octal value
giá trị hiển thị là (0) không.