Máy tính Chmod

Lớp Đọc (r) Ghi (w) Thực thi (x)
Chủ sở hữu
Nhóm
Khác
Tiếp theo

Quyền của tệp Unix gồm ba bộ ba, đọc, ghi, thực thi cho chủ sở hữu, nhóm và những người khác, được rút gọn gọn gàng thành một số bát phân ba chữ số. chmod 755 script.sh chính là rwxr-xr-x: chủ sở hữu có toàn quyền, còn nhóm và những người khác có quyền đọc và thực thi. Máy tính này cho phép bạn bật/tắt từng hộp kiểm và xem giá trị bát phân thay đổi trực tiếp, hoặc dán một số bát phân để xem cách phân tích thành rwx, kèm theo lệnh chmod chính xác sẵn sàng để sao chép.

Quyền chmod hoạt động như thế nào

  1. 1

    Chuyển đổi 9 bit quyền

    Ba nhóm (người dùng, nhóm, người khác) × ba quyền (đọc, viết, thực thi) = 9 hộp kiểm.

  2. 2

    Mỗi nhóm trở thành một chữ số bát phân

    Đọc = 4, viết = 2, thực thi = 1. Tính tổng các bit bạn muốn kích hoạt.

  3. 3

    Đọc kết quả dạng bát phân và ký hiệu

    ví dụ 755 → rwxr-xr-x; 644 → rw-r--r--; 600 → rw-------.

  4. 4

    Sao chép lệnh chmod

    Công cụ hiển thị lệnh chmod cho quyền hiện tại, sẵn sàng để sao chép. Ví dụ: chmod 755 tên_tệp, chmod u+x tên_tệp, chmod -R 755 thư_mục.

Giá trị bit quyền

Bit Giá trị Ý nghĩa với tập tin Ý nghĩa với thư mục
Đọc 4 Có thể xem nội dung Có thể liệt kê các mục
Ghi 2 Có thể sửa đổi Có thể tạo/xóa/đổi tên mục
Thực thi 1 Có thể chạy như một chương trình Có thể duyệt qua (cd vào, truy cập bên trong)

Giá trị chmod phổ biến

Bát phân Tượng trưng Sử dụng điển hình
777 rwxrwxrwx Mọi người đều ghi được, nguy hiểm; hiếm khi đúng
755 rwxr-xr-x Tập lệnh, nhị phân, thư mục
750 rwxr-x--- Tập lệnh riêng tư cho bạn và nhóm của bạn
700 rwx------ Tập lệnh riêng tư cho bạn (SSH, ~/.ssh)
644 rw-r--r-- Tài liệu công cộng, hình ảnh, HTML
640 rw-r----- Cấu hình nhóm có thể đọc
600 rw------- Cấu hình riêng tư, khóa riêng SSH, ~/.netrc
444 r--r--r-- Tệp được xuất bản chỉ đọc
400 r-------- Chỉ đọc riêng tư (hiếm khi đúng; sử dụng 600)

Quyền đặc biệt (hiếm nhưng quan trọng)

  • setuid (4xxx): chạy file với tư cách là chủ sở hữu của nó, bất kể ai thực thi. /usr/bin/passwd sử dụng cái này.
  • setgid (2xxx): trên file, chạy theo nhóm. Trên các thư mục, các tệp mới kế thừa nhóm của thư mục.
  • sticky bit (1xxx): trên thư mục, chỉ chủ sở hữu tập tin mới có thể xóa/đổi tên. /tmp sử dụng cái này.

Các bát phân có bốn chữ số bao gồm: chmod 4755 setuid-binary bật setuid cùng với 755.

chmod tượng trưng

Nhiều quản trị viên thích hình thức tượng trưng cho những thay đổi gia tăng:

  • chmod u+x script, thêm quyền thực thi chỉ dành cho chủ sở hữu.
  • chmod go-w file, xóa ghi cho nhóm và nhóm khác.
  • chmod a+r file, đọc cho tất cả (người dùng, nhóm, người khác).
  • chmod u=rw,go=r file, đặt chính xác các bit này.
  • chmod -R 755 directory, đệ quy.

Những lỗi thường gặp

  • 777 trên các thư mục tải lên: dường như “sửa quyền”; thực sự mở máy chủ cho những kẻ tấn công. Sử dụng kết hợp hẹp hơn (ví dụ: 755 với quyền sở hữu nhóm chính xác).
  • chmod -R 644 trên các thư mục: loại bỏ lệnh thực thi trên các thư mục nên bạn không thể cd vào chúng. Sử dụng 755 cho thư mục, 644 cho các tệp thông thường.
  • 0600 so với 600: số 0 đứng đầu biểu thị số bát phân trong C và shell; hầu hết việc triển khai chmod đều chấp nhận cả hai.
  • Umask: các tệp mới kế thừa 666 trừ đi ô. Umask 022 mặc định cung cấp 644 tệp và 755 thư mục.

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

Bạn thường muốn chủ sở hữu có thể sửa đổi và những người khác có thể liệt kê và duyệt qua. 755 = rwx cho chủ sở hữu, r-x cho nhóm và người khác - chính xác là sự kết hợp đó.

Hầu như không bao giờ. 777 cho phép bất kỳ ai trên hệ thống sửa đổi tệp. Trong hệ thống nhiều người dùng, đó là lỗ hổng bảo mật; trong hệ thống một người dùng, điều đó là không cần thiết (chủ sở hữu đã có rwx với 755). Nếu một ứng dụng web có vẻ cần 777 thì cách khắc phục thực sự là quyền sở hữu chính xác (chown) hoặc tư cách thành viên nhóm.

Thư mục ~/.ssh: 700. Khóa riêng (id_rsa, id_ed25519): 600. Khóa công khai (.pub): 644. authorized_keys: 600. SSH từ chối các khóa có quyền rộng hơn như một biện pháp an toàn.

chown dành cho chủ sở hữu, chgrp dành cho nhóm - các lệnh riêng biệt. chmod chỉ thay đổi bit chứ không phải người dùng/nhóm sở hữu tệp.

Công cụ liên quan