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


37

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?

Câu trả lời:


23

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 với chown, ví dụchown guillermooo
  • thay đổi nhóm với chgrp, vdchgrp root
  • thay đổi quyền với chmod, vd 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à gõ man [tool], vd man chmod.


8
Khó khăn hơn một chút với các thư mục - cần có sự cho phép thực thi để truy cập nội dung của thư mục. Điều này có nghĩa (ví dụ) để đọc hoặc ghi một tệp bạn cần thực thi quyền truy cập vào thư mục chứa nó cũng như các quyền thích hợp trên chính tệp đó. Điều này gần như không bao giờ xuất hiện, nhưng đó là lý do tại sao nó được ghi chép / hiểu kém!
cá adamnfish

Huh. Bạn đúng. Tôi sẽ chỉnh sửa nó vào ngày mai, khi tôi bớt buồn ngủ.
ParanoiaPuppy

1
chown guillermooocái này không nên chown guillermooo filenamesao?
Zeynel

32

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 tin / thư mục có thể được mở để truy cập đọc.
  • w (write) tập tin / thư mục có thể được mở để truy cập ghi / chỉnh sửa.
  • Tập tin x (thực thi) có thể được thực thi vì một chương trình / thư mục có thể được duyệt qua.

( Vượt qua một thư mục cơ bản có nghĩa sử dụng nó như là một phần của một tên đường dẫn. Xem https://unix.stackexchange.com/a/13891 hoặc https://unix.stackexchange.com/questions/21251 cho 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 một tập tin được cấp bất kỳ quyền nào.
  • g (nhóm) nhóm các tập tin thuộc về được cấp phép.
  • 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 tin (= user) có r ead, w nghi thức, và e x ecute phép,
b) của tập tin nhóm cấp r ead và e x ecute quyền, và
c) tất cả những người khác chỉ nên có r truy 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 chmodlệnh 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 ta có hai tùy chọn để thay đổi các bit cho phép với chmod:

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 tôi 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, bit thực thi của tệp thư mục được đặt, chúng tôi sẽ được phép chạy tệp này dưới dạng 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ụ như 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 -lchú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 tin, chúng tôi sẽ gặp Permission deniedlỗi. 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 tích hợp để làm như vậy chowncho người dùng và chgrpcho các nhóm.

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

sudo chown takkat testfile

Để thay đổi nhóm của tệp 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 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:

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.