Câu trả lời:
Bạn đang sử dụng -664
, chỉ cần sử dụng 664
thay thế. Và không bao giờ sử dụng sudo
khi bạn không cần. Nếu đó là tệp của bạn, bạn không cần sudo
:
chmod 644 my_file
Khi bạn chạy chmod
với -
chế độ trước chế độ, bạn sẽ xóa chế độ đó. Xem man chmod
(nhấn mạnh của tôi):
Toán tử + làm cho các bit chế độ tệp đã chọn được thêm vào các bit chế độ tệp hiện có của mỗi tệp; - khiến chúng bị loại bỏ ; 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 không được đề cập của thư mục không bị ảnh hưởng.
Các con số là:
Vì vậy, một tệp có 777
quyền có nghĩa là mọi người đều có quyền thực hiện cả ba, vì 1 + 2 + 4 = 7, và do đó, đặt quyền thành 7 có nghĩa là cho phép đọc, ghi và thực thi.
Nếu bạn bắt đầu với một tệp có chế độ là 777
:
$ ls -l my_file
-rwxrwxrwx 1 terdon terdon 0 May 28 13:45 my_file
Và bây giờ chạy chmod -644
, bạn sẽ loại bỏ các bit 644
và kết thúc với một tệp có chế độ là 133
:
$ chmod -644 my_file; ls -l my_file
---x-wx-wx 1 terdon terdon 0 May 28 13:45 my_file
Đó là bởi vì bạn đã xóa 6 (đọc (4) + write (2)) khỏi quyền của chủ sở hữu, chỉ để lại 1 (thực thi) và 4 (đọc) từ nhóm và các quyền khác. Kết quả là một tệp chỉ có quyền thực thi (1) cho chủ sở hữu, và viết và thực thi (bạn bỏ đặt 4, để lại 1 và 3) quyền cho phần còn lại.
Vì tệp của bạn có thể có quyền mặc định cho các tệp mới, vì vậy 644
, khi bạn chạy chmod -644 my_file
, bạn đã xóa tất cả các bit quyền được đặt và nhận tệp không có quyền cho bất kỳ ai.
$ ls -l my_file
-rw-r--r-- 1 terdon terdon 0 May 28 13:45 my_file
$ chmod -644 my_file
$ ls -l my_file
---------- 1 terdon terdon 0 May 28 13:45 my_file
-
trước 644? Hãy thửsudo chmod 644 my_file
.-644
sẽ loại bỏ các quyền.