'chmod -644' sẽ đặt quyền cho tập tin thành 000


12

Tôi đã có một tệp với 644 ( -rw-r--r--) và muốn đổi nó thành 664 ( -rw-rw-r--), sau khi chạy:

sudo chmod -664 my_file

quyền truy cập tệp được đặt thành 000 ( ----------).

Cố gắng thay đổi các quyền thành bất cứ điều gì khác hơn 000 dường như không hoạt động. Tôi đang thiếu gì ở đây?


11
Tại sao bạn có -trước 644? Hãy thử sudo chmod 644 my_file. -644sẽ loại bỏ các quyền.
Soren A

Câu trả lời:


34

Bạn đang sử dụng -664, chỉ cần sử dụng 664thay thế. Và không bao giờ sử dụng sudokhi 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 chmodvớ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à:

  • 1: thực hiện
  • 2: viết
  • 4: đọc

Vì vậy, một tệp có 777quyề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 644và 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
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.