it-swarm-vi.com

Làm thế nào để quyền tập tin hoạt động?

Bạn có thể giải thích ngắn gọn các khái niệm chính và các công cụ dòng lệnh được sử dụng để quản lý quyền truy cập tệp không?

37
guillermooo

Mỗi tệp có quyền cho ba loại khác nhau:

  • chủ sở hữu của tập tin,
  • nhóm được liên kết với tệp và
  • mọi người khác.

Quyền có nghĩa là quyền đọc tệp, quyền ghi vào tệp hoặc quyền thực thi tệp trong trường hợp tập lệnh hoặc chương trình.

Trên CLI, bạn có thể

  • thay đổi chủ sở hữu bằng chown, ví dụ: chown guillermooo
  • thay đổi nhóm bằng chgrp, ví dụ: chgrp root
  • thay đổi quyền với chmod, ví dụ: chmod u+w filename.ext (Thêm quyền viết cho chủ sở hữu tệp filename.ext)

Nếu bạn muốn biết thêm về từng công cụ này, hãy mở một thiết bị đầu cuối và nhập man [tool], ví dụ: man chmod.

23
ParanoiaPuppy

Cảnh báo: Thay đổi quyền của tệp và thư mục có khả năng gây hại và có thể khiến hệ thống của bạn không thể sử dụng được. Khi chạy đệ quy với quyền root trên đường dẫn sai, chúng ta có thể đi đến điểm mà chúng ta sẽ phải cài đặt lại Ubuntu. Do đó, một ý tưởng tốt là không thay đổi các quyền bên ngoài các thư mục HOME và chạy các lệnh đệ quy như root nên tránh bất cứ khi nào có thể.

Quyền truy cập tệp

Ubuntu đã kế thừa khái niệm quyền từ Unix khi đối với các tệp hoặc thư mục có ba tác vụ chúng ta có thể cho phép hoặc từ chối:

  • r (đọc) tệp/thư mục có thể được mở để truy cập đọc.
  • w (ghi) tệp/thư mục có thể được mở để truy cập ghi/chỉnh sửa.
  • x (thực thi) tệp có thể được thực thi vì thư mục chương trình/có thể được duyệt qua.

( Traversing một thư mục về cơ bản có nghĩa là sử dụng nó như một phần của tên đường dẫn. Xem https://unix.stackexchange.com/a/13891 hoặc - https://unix.stackexchange.com/questions/21251 để được giải thích thêm.)

Ngoài ra, chúng tôi có ba trường hợp mà chúng tôi cấp phép:

  • u (người dùng) chủ sở hữu của tệp được cấp bất kỳ quyền nào.
  • g (nhóm) nhóm tệp thuộc về được cấp quyền.
  • o (khác) tất cả những người khác được cấp phép.

Bây giờ để có được sự kết hợp của các sắp xếp này, chúng tôi sử dụng một hệ thống nhị phân trong đó mỗi bit xác định một quyền. Điều này có thể được hiển thị tốt nhất trong Bảng sau

    Permission | Binary | Octal  | User  | Group | Other |
    ======================================================
      r        |  100   |   4    |       |       |       |
      w        |  010   |   2    |       |       |       |
      x        |  001   |   1    |       |       |       |
    =======================================================
    Number

Bây giờ nếu chúng ta muốn ví dụ

a) chủ sở hữu của một tệp (= người dùng) có read wnghi thức, và excho phép
[.__.] b) nhóm của tệp được cấp read và exquyền hạn, và
[.__.] c) tất cả những người khác chỉ nên có rtruy cập ead.

Sau đó, quyền cho phép tệp sẽ là:

 u   g   o
rwx r-x r--

Để có được điều này trong các số bát phân, ví dụ. đối với lệnh chmodNAME _ hoặc khi chúng ta phải hiểu một thông báo lỗi, chúng ta cần điền vào bảng trên như dưới đây:

    Permission | Binary | Octal  | User  | Group | Other |
    ======================================================
      r        |  100   |   4    |   4   |   4   |   4   |
      w        |  010   |   2    |   2   |   0   |   0   |
      x        |  001   |   1    |   1   |   1   |   0   |
    ======================================================
    Numbers add to                   7       5       4     

Mỗi số cho phép cần được thêm vào để tổng hợp cho người dùng (4 + 2 + 1 = 7), nhóm (4 + 0 + 1 = 5) và khác (4 + 0 + 0 = 4). Số kết quả sau đó là:

 u   g   o
 7   5   4

Bây giờ chúng tôi có hai tùy chọn để thay đổi các bit quyền với chmodname__:

chmod u+rwx g+rx o+r filename

hoặc đơn giản hơn nhiều với

chmod 751 filename

Cả hai lệnh sẽ làm như vậy.

Quyền mặc định của một tệp mới được tạo trong nhà của chúng tôi sẽ là 664 (-rw-rw-r--).

Nếu chúng tôi muốn các tệp có thể được thực thi như các chương trình, chúng tôi sẽ phải thay đổi quyền này.

  • Lưu ý rằng chúng ta cũng sẽ phải thay đổi quyền của thư mục mà tệp thực thi này có thể có. Chỉ khi cả hai, tệp bit thực thi của thư mục được đặt chúng tôi sẽ được phép chạy tập tin này như một chương trình.

  • Khi sao chép một tập tin vào nhà của chúng tôi, nó sẽ mất các quyền đó sẽ được thay thế bằng các quyền mặc định của chúng tôi (trừ khi chúng tôi sao chép bằng các tùy chọn nâng cao, ví dụ: tùy chọn lưu trữ).

  • Cũng lưu ý rằng tập tin có thể kế thừa sự cho phép của họ từ điểm gắn kết của họ, resp. tùy chọn gắn kết. Điều này rất quan trọng khi gắn các ổ đĩa định dạng Windows không hỗ trợ quyền Unix.

Người dùng và nhóm

Chúng tôi sớm nhận ra rằng đây chỉ là một nửa của câu chuyện. Chúng ta cũng cần sắp xếp đồ đạc. Để làm điều này, mỗi tệp hoặc thư mục có chủ sở hữu được xác định và thành viên nhóm được xác định.

Mỗi lần chúng tôi tạo một tệp, chúng tôi sẽ là chủ sở hữu của một tệp và nhóm của tệp cũng sẽ là chúng tôi. Với ls -l, chúng ta có thể thấy các quyền, quyền sở hữu và nhóm được nhìn thấy từ đầu ra ví dụ sau:

-rw-rw-r--  1 takkat takkat    4096 Sep 12 20:25 test
  • Chúng tôi chỉ được phép thay đổi quyền, nhóm hoặc quyền sở hữu tệp là của chúng tôi.

Nếu chúng tôi không phải là chủ sở hữu tệp, chúng tôi sẽ gặp lỗi Permission denied. Chỉ root mới có thể thay đổi điều này cho tất cả các tập tin. Đây là lý do tại sao chúng tôi phải sử dụng Sudokhi chỉnh sửa quyền của các tệp không phải của chúng tôi. Có hai lệnh dựng sẵn để làm như vậy chownNAME _ cho người dùng và chgrpNAME _ cho các nhóm.

Để thay đổi quyền sở hữu tệp từ bất kỳ ai thành takkatname__, chúng tôi có thể ban hành lệnh này:

Sudo chown takkat testfile

Để thay đổi nhóm của tệp thành takkatchúng tôi phát hành

Sudo chgrp takkat testfile

Đọc các trang của các lệnh để biết thêm chi tiết và các tùy chọn. Ngoài ra còn có hướng dẫn chi tiết đẹp hơn này được đề nghị để đọc thêm:

Cũng tìm thấy một số câu hỏi liên quan ở đây:

31
Takkat