Máy tính Chmod

Máy tính tương tác cho phép tệp Linux/Unix.

Không có dữ liệu nào rời khỏi thiết bị của bạn
Đọc (4)
Ghi (2)
Thực thi (1)
Chủ sở hữu
Nhóm
Khác
Số
Biểu tượng ---------
chmod 000 filename

Quyền phổ biến

Cách sử dụng

  1. Tích các ô để xác định quyền đọc, ghi và thực thi cho Chủ sở hữu, Nhóm và Khác.
  2. Hoặc nhập trực tiếp một giá trị số 3 chữ số (vd: 755).
  3. Ký hiệu biểu tượng và lệnh chmod được cập nhật theo thời gian thực.
  4. Nhấp Sao chép lệnh để sao chép lệnh chmod đầy đủ.

Tham khảo quyền

Số Quyền Biểu tượng
0Không có quyền---
1Chỉ thực thi--x
2Chỉ ghi-w-
3Ghi + thực thi-wx
4Chỉ đọcr--
5Đọc + thực thir-x
6Đọc + ghirw-
7Đọc + ghi + thực thirwx

Câu hỏi thường gặp

chmod 755 nghĩa là gì?

755 nghĩa là chủ sở hữu có thể đọc, ghi và thực thi (7), trong khi nhóm và những người khác có thể đọc và thực thi nhưng không thể ghi (5). Đây là quyền phổ biến nhất cho thư mục và tập lệnh.

Sự khác biệt giữa 644 và 755 là gì?

644 (rw-r--r--) cho phép chủ sở hữu đọc/ghi và mọi người chỉ đọc · điển hình cho tệp. 755 (rwxr-xr-x) thêm quyền thực thi · điển hình cho thư mục và tập lệnh.

Nó có hoạt động cho thư mục không?

Có. Quyền số hoạt động theo cùng một cách. Đối với thư mục, «thực thi» có nghĩa là có thể vào thư mục và truy cập nội dung của nó.

Mô hình phân quyền Unix với 9 bit

Mọi tệp và thư mục trên hệ thống giống Unix đều mang một «chế độ», một số nguyên nhỏ ghi lại ai có thể làm gì. Mô hình về cơ bản không thay đổi kể từ Sixth Edition Unix (tháng 5 năm 1975), với các mục thủ công chmod sớm nhất xuất hiện trong Version 1 Unix (tháng 11 năm 1971). Nó mã hóa chín bit phân quyền được sắp xếp thành ba bộ ba gồm đọc / ghi / thực thi, một bộ ba cho chủ sở hữu tệp, một cho nhóm và một cho tất cả mọi người:

Owner    Group    Others
r w x    r w x    r w x
4 2 1    4 2 1    4 2 1

Mỗi nhóm ba bit tương ứng chính xác một chữ số octal vì ba bit mã hóa 2³ = 8 giá trị phân biệt (0-7). Các trọng số 4, 2, 1 là 2², 2¹, 2⁰. Cộng bất kỳ tổ hợp nào của đọc (4) + ghi (2) + thực thi (1) tạo ra tám chữ số khả thi cho mỗi lớp mà không có xung đột, đó là toàn bộ ánh xạ octal-sang-ký-hiệu. chmod 755 do đó có nghĩa là rwx (4+2+1=7) cho chủ sở hữu, r-x (4+1=5) cho nhóm, và r-x cho tất cả mọi người.

Chuỗi 10 ký tự bạn thấy trong ls -l là cùng dữ liệu cộng thêm một cột phụ ở đầu cho loại tệp: - cho tệp thông thường, d cho thư mục, l cho symlink, c cho thiết bị ký tự, b cho thiết bị khối, p cho named pipe, s cho socket. Chín ký tự còn lại là các bộ ba phân quyền.

Ký hiệu symbolic: chmod u+x file

Chế độ octal ghi đè tất cả chín bit cùng lúc. Chế độ symbolic không phá hủy, chúng chỉ thay đổi các bit bạn chỉ định. Cú pháp là who + op + perm:

Các ví dụ hữu ích:

Chế độ số rõ ràng và idempotent (chmod 755 luôn có nghĩa là chín bit giống nhau). Chế độ symbolic chính xác (chmod g+w chỉ thay đổi một bit). Các script production thường ưu tiên chế độ số để rõ ràng trong nhật ký kiểm toán; các quản trị viên gõ lệnh trực tiếp thường ưu tiên symbolic cho các điều chỉnh nhỏ.

Các Chế Độ Thông Dụng và Mục Đích

Chế độKý hiệuMục đích thường dùng
755rwxr-xr-xTệp thực thi công khai và thư mục tiêu chuẩn, /usr/bin/*, web docroot, Git working tree
644rw-r--r--Tệp thông thường tiêu chuẩn, cấu hình, mã nguồn, tài liệu
700rwx------Thư mục riêng tư, ~/.ssh, tài liệu cá nhân không ai khác nên thấy
600rw-------Tệp riêng tư, ~/.ssh/id_rsa, ~/.gnupg/*, tệp mật khẩu
444r--r--r--Chỉ đọc cho mọi người, dữ liệu tham chiếu cố định, chỉ mục Cargo registry
750rwxr-x---Chủ sở hữu đầy đủ, nhóm đọc/duyệt qua, người khác không có gì, thư mục dịch vụ dùng chung theo nhóm
777rwxrwxrwxHầu như luôn luôn sai. Xem bên dưới.

Tại sao chmod 777 hầu như luôn luôn sai

Đặt tệp thành 777 khiến nó có thể đọc, ghi và thực thi bởi mọi người. Bất kỳ người dùng nào trên máy (bao gồm tài khoản dịch vụ không có đặc quyền và bất kỳ tiến trình nào bị xâm phạm) đều có thể đọc nội dung tệp, sửa đổi và chạy nó. Lời khuyên tutorial chuẩn «chỉ cần chmod 777 cho đến khi hoạt động» là một antipattern bảo mật đã gây ra vô số vi phạm thực sự: tệp cấu hình có thể ghi bởi mọi người bị giả mạo, thư mục web có thể ghi bởi mọi người trở thành vector phá hoại, tệp nhật ký có thể ghi bởi mọi người cho phép làm giả nhật ký, thư mục có thể thực thi bởi mọi người cho phép thực thi mã tùy ý.

Nếu lỗi phân quyền đang chặn bạn, cách sửa đúng hầu như luôn là thay đổi chủ sở hữu tệp (với chown) hoặc nhóm của nó (với chgrp) để người dùng cần truy cập thực sự sở hữu hoặc đồng sở hữu tệp, không phải xóa kiểm soát truy cập cho mọi người.

Các Bit Đặc Biệt: setuid, setgid, sticky

Một chữ số octal thứ tư được thêm vào đầu chế độ mở khóa ba bit đặc biệt, tất cả đều là di tích của thiết kế Unix gốc:

Hiển thị ls -l thay ký tự thực thi thành s, S, t hoặc T khi các bit này được đặt (chữ hoa có nghĩa là bit được đặt nhưng bit thực thi cơ bản không được đặt).

umask: nghịch đảo của chmod

chmod đặt phân quyền trên các tệp hiện có. umask xác định phân quyền mặc định trên các tệp bạn tạo, bằng cách hoạt động như mặt nạ trừ. Phép tính: một tệp thông thường mới sẽ là 666 (rw-rw-rw-), một thư mục mới là 777, trừ bất cứ thứ gì được đặt trong umask. Các giá trị thông dụng:

umask không có đối số hiển thị giá trị hiện tại. Đặt nó trong shell init (~/.bashrc, ~/.zshrc) hoặc trong /etc/login.defs áp dụng cho toàn bộ phiên.

Tệp so với Thư mục, Ý nghĩa Khác nhau của x

Các bit r/w/x giống nhau có ý nghĩa tinh tế khác nhau trên thư mục so với tệp:

chmod đệ quy và mẫu find

chmod -R 755 /var/www áp dụng cùng một chế độ cho mọi tệp và thư mục trong cây, điều này hầu như luôn sai vì tệp và thư mục muốn các chế độ khác nhau (ví dụ: 644 cho tệp, 755 cho thư mục). Thành ngữ đúng sử dụng find:

find /var/www -type f -exec chmod 644 {} +
find /var/www -type d -exec chmod 755 {} +

Hoặc, tương đương, sử dụng chmod của GNU với chữ hoa X: chmod -R u=rwX,go=rX /var/www cấp thực thi chỉ trên thư mục và trên các tệp đã có thực thi ở đâu đó, chính xác là kết quả bạn thường muốn.

Symlink, ACL và cách Linux mở rộng mô hình

Hai cải tiến đáng biết:

Thêm câu hỏi

Tại sao SSH key của tôi bị từ chối với «permissions are too open»?

Vì client OpenSSH từ chối sử dụng khóa riêng tư có thể đọc bởi nhóm hoặc mọi người, với giả định rằng bất cứ thứ gì người khác có thể đọc không nên là thông tin xác thực. Cách sửa là chmod 600 ~/.ssh/id_rsa (và chmod 700 ~/.ssh trên bản thân thư mục). Logic tương tự cho ~/.gnupg/ và hầu hết các kho thông tin xác thực khác.

Sự khác biệt giữa chmod và chown là gì?

chmod thay đổi các bit chế độ, những gì owner/group/others có thể làm. chown thay đổi ai là chủ sở hữu. Thường bạn cần cả hai: một tệp mà «người dùng sai không thể đọc» thường không cần mở quyền; nó cần được sở hữu bởi người dùng cần truy cập. Hãy thử chown myuser:mygroup file trước.

Tôi có nên dùng 666 cho tệp nhật ký không?

Hầu như không bao giờ. Tệp nhật ký có thể ghi bởi mọi người cho phép bất kỳ tiến trình nào (bao gồm dịch vụ bị xâm phạm chạy với người dùng ít đặc quyền) giả mạo các mục nhật ký hoặc xóa nhật ký. Mẫu chuẩn là làm cho thư mục nhật ký có thể ghi bởi một nhóm nhật ký cụ thể (adm trên Debian, wheel trên BSD, v.v.) và thêm các dịch vụ liên quan vào nhóm đó, hoặc sử dụng logrotate + một logging daemon (rsyslog, systemd-journald) xử lý quyền sở hữu tệp cho bạn.

Máy tính này có tính đến các bit đặc biệt không?

Không, nó bao gồm chín bit phân quyền cơ bản (chế độ 3 chữ số tiêu chuẩn). Với setuid (4xxx), setgid (2xxx) hoặc sticky (1xxx) bạn cần thêm chữ số đầu thủ công. Đại đa số công việc chmod hàng ngày sử dụng chế độ 3 chữ số và không bao giờ đụng đến các bit đặc biệt.

Có gì được gửi lên máy chủ không?

Không. Việc chuyển đổi toggle ↔ octal ↔ symbolic là số học thuần túy, được tính toán trong trình duyệt của bạn. Trang hoạt động ngoại tuyến sau khi đã tải.

Công cụ liên quan

Trình tạo .htaccess Trình tạo biểu thức Cron Trình tính hash tệp miễn phí