Quyền của tệp Linux hoạt động như thế nào?
Nếu bạn đã sử dụng Linux một thời gian (và thậm chí cả OS X), có lẽ bạn đã gặp phải một lỗi về quyền của Cameron. Nhưng chính xác chúng là gì và tại sao chúng lại cần thiết hay hữu ích? Hãy nhìn vào bên trong.
Quyền Người dùng
Ngày trước, máy tính là những cỗ máy khổng lồ đắt tiền đến không ngờ. Để tận dụng tối đa chúng, nhiều thiết bị đầu cuối máy tính đã được nối lên cho phép nhiều người dùng đồng thời tiến hành công việc của họ. Xử lý và lưu trữ dữ liệu đã được thực hiện trên máy, trong khi bản thân các thiết bị đầu cuối chỉ là một phương tiện để xem và nhập dữ liệu. Nếu bạn nghĩ về nó, thì chúng ta sẽ truy cập dữ liệu trên đám mây trên mạng rất nhiều; nhìn vào hệ thống Cloud MP3, Gmail và Dropbox của Amazon và bạn sẽ nhận thấy rằng trong khi các thay đổi có thể được thực hiện cục bộ, mọi thứ đều được lưu trữ từ xa.
(Ảnh: Thiết bị đầu cuối Zenith Z-19, câm, tín dụng: ajmexico)
Để làm việc này, người dùng cá nhân cần phải có tài khoản. Họ cần phải có một phần của vùng lưu trữ được phân bổ cho họ và họ cần được phép chạy các lệnh và chương trình. Mọi người đều có quyền truy cập cụ thể của người dùng, mà ra lệnh cho những gì họ có thể và không thể làm, ở đâu trên hệ thống họ làm và không có quyền truy cập, và những tệp mà họ có thể và không thể sửa đổi. Mỗi người dùng cũng được đặt vào các nhóm khác nhau, cấp hoặc hạn chế quyền truy cập thêm.
Truy cập file
Trong thế giới đa người dùng kỳ quặc này, chúng tôi đã thiết lập ranh giới về những gì người dùng có thể làm. Nhưng những gì về những gì họ truy cập? Vâng, mỗi tệp có một bộ quyền và chủ sở hữu. Chỉ định chủ sở hữu, thường bị ràng buộc khi tệp được tạo, khai báo người dùng thuộc về ai và chỉ người dùng đó mới có thể thay đổi quyền truy cập của tệp.
Trong thế giới của Linux, các quyền được chia thành ba loại: đọc, viết và thực thi. Truy cập của Read Read cho phép một người xem nội dung của tập tin, quyền truy cập của Google viết cho phép một người sửa đổi nội dung của tập tin và thực hiện nhiệm vụ cho phép một người chạy một tập lệnh, như tập lệnh hoặc chương trình. Mỗi loại này được áp dụng cho các lớp khác nhau: người dùng, nhóm và thế giới. Người dùng trực tuyến có nghĩa là chủ sở hữu, nhóm người nhóm có nghĩa là bất kỳ người dùng nào trong cùng nhóm với chủ sở hữu và người dùng thế giới có nghĩa là bất kỳ ai và mọi người.
Các thư mục cũng có thể bị hạn chế với các quyền này. Ví dụ, bạn có thể cho phép những người khác trong nhóm của bạn xem các thư mục và tệp trong thư mục nhà của bạn, nhưng không phải bất kỳ ai ngoài nhóm của bạn. Có lẽ bạn sẽ chỉ muốn giới hạn quyền truy cập vào văn bản của Google, trừ khi bạn đang làm việc với một dự án chung nào đó. Bạn cũng có thể tạo một thư mục dùng chung cho phép mọi người xem và sửa đổi các tệp trong thư mục đó.
Thay đổi quyền trong Ubuntu
GUI
Để thay đổi quyền của tệp bạn sở hữu trong Ubuntu, chỉ cần nhấp chuột phải vào tệp và truy cập vào Thuộc tính.
Bạn có thể thay đổi cho dù Chủ sở hữu, Nhóm hoặc Người khác có thể đọc và viết, chỉ đọc hoặc không làm gì. Bạn cũng có thể chọn một hộp để cho phép thực thi tệp và điều này sẽ kích hoạt đồng thời cho Chủ sở hữu, Nhóm và những người khác.
Dòng lệnh
Bạn cũng có thể làm điều này thông qua dòng lệnh. Đi đến một thư mục có các tệp trong đó và gõ lệnh sau để xem tất cả các tệp trong danh sách:
ls -al
Bên cạnh mỗi tệp và thư mục, bạn sẽ thấy một phần đặc biệt phác thảo các quyền mà nó có. Nó trông như thế này:
-rwxrw-r-
Các r là viết tắt của từ đọc, tiếng Pháp w là viết tắt của viết, viết và x là viết tắt của cụm từ thực thi. Bạn cũng sẽ nhận thấy rằng có 10 không gian giữ giá trị. Bạn có thể bỏ qua bộ thứ nhất và sau đó có 3 bộ 3. Bộ thứ nhất dành cho chủ sở hữu, bộ thứ hai dành cho nhóm và bộ cuối cùng dành cho thế giới.
Để thay đổi quyền của tệp hoặc thư mục, hãy xem dạng cơ bản của lệnh chmod.
tập tin chmod [class] [toán tử] [quyền]
tệp chmod [ugoa] [+ hoặc -] [rwx]
Điều này thoạt nghe có vẻ phức tạp, nhưng tin tôi đi, nó khá dễ. Đầu tiên, chúng ta hãy nhìn vào các lớp:
- u: cái này dành cho chủ.
- g: cái này dành cho nhóm.
- o: Cái này dành cho tất cả những cái khác.
- a: Điều này sẽ thay đổi quyền cho tất cả các bên trên.
Tiếp theo, các nhà khai thác:
- +: Dấu cộng sẽ thêm các quyền theo sau.
- -: Dấu trừ sẽ xóa các quyền theo sau.
Vẫn còn với tôi? Và phần cuối cùng giống như khi chúng tôi kiểm tra quyền của tệp:
- r: Cho phép truy cập đọc.
- w: Cho phép truy cập ghi.
- x: Cho phép thực thi.
Bây giờ, hãy đặt nó lại với nhau. Giả sử chúng ta có một tệp có tên là todo.txt, có các quyền sau:
-rw-rw-r-
Đó là, chủ sở hữu và nhóm có thể đọc và viết, và thế giới chỉ có thể đọc. Chúng tôi muốn thay đổi các quyền thành:
-rwxr-
Đó là, chủ sở hữu có đầy đủ quyền và nhóm có thể đọc. Chúng tôi có thể làm điều này trong 3 bước. Trước tiên, chúng tôi sẽ thêm quyền thực thi cho người dùng.
chmod u + x todo.txt
Sau đó, chúng tôi sẽ xóa quyền viết cho nhóm.
chmod g-w todo.txt
Cuối cùng, chúng tôi sẽ xóa quyền đọc cho tất cả người dùng khác.
chmod o-r todo.txt
Chúng ta cũng có thể kết hợp chúng thành một lệnh, như vậy:
chmod u + x, g-w, o-r todo.txt
Bạn có thể thấy rằng mỗi phần được phân tách bằng dấu phẩy và không có khoảng trắng.
Dưới đây là một số quyền hữu ích:
- -rwxr-xr-x: Chủ sở hữu có toàn quyền, nhóm và những người dùng khác có thể đọc nội dung tệp và thực thi.
- -rwxr-r-: Chủ sở hữu có toàn quyền, nhóm và những người dùng khác chỉ có thể đọc tệp (hữu ích nếu bạn không phiền người khác xem tệp của mình.
- -rwx-: Chủ sở hữu có toàn quyền, tất cả những người khác không có (hữu ích cho các tập lệnh cá nhân).
- -rw-rw--: Chủ sở hữu và nhóm có thể đọc và viết (hữu ích khi cộng tác với các thành viên nhóm).
- -rw-r-r-: Chủ sở hữu có thể đọc và viết, nhóm và những người dùng khác chỉ có thể đọc tệp (hữu ích để lưu trữ các tệp cá nhân trên mạng chia sẻ).
- -rw--: Chủ sở hữu có thể đọc và viết, tất cả những người khác không có (hữu ích để lưu trữ các tệp cá nhân).
Có một vài điều khác bạn có thể làm với chmod - như setuid và setgid - nhưng chúng hơi sâu và hầu hết người dùng sẽ không thực sự cần sử dụng chúng.
Tập tin gốc hoặc siêu người dùng và hệ thống
Ngày nay, chúng tôi không phải lúc nào cũng chạy các hệ thống có nhiều người dùng. Tại sao chúng ta vẫn phải lo lắng về quyền?
Vâng, Unix và các dẫn xuất của nó - Linux, OS X, trong số những thứ khác - cũng phân biệt giữa những thứ do người dùng điều hành, những thứ được quản trị viên hoặc với đặc quyền của quản trị viên và những thứ do chính hệ thống điều hành. Như vậy, những thứ không thể thiếu cho hệ thống cần có đặc quyền của quản trị viên để được thay đổi hoặc truy cập. Bằng cách này, bạn không làm hỏng bất cứ điều gì vô tình.
Trong Ubuntu, để thực hiện các thay đổi đối với các tệp hệ thống, bạn sử dụng, hoặc sử dụng các tính năng của quản trị viên. Trong các bản phát hành khác, bạn chuyển sang sử dụng hệ thống gốc Root hoặc người dùng siêu người dùng, có hiệu quả tương tự cho đến khi bạn đăng xuất.
Xin lưu ý rằng trong cả hai trường hợp này, việc thay đổi quyền truy cập tệp có thể dẫn đến các chương trình không hoạt động, vô tình thay đổi quyền sở hữu tệp cho người dùng root (thay vì chủ sở hữu) và làm cho hệ thống kém an toàn hơn (bằng cách cấp thêm quyền). Vì vậy, chúng tôi khuyên bạn không nên thay đổi quyền đối với các tệp - đặc biệt là các tệp hệ thống - trừ khi cần thiết hoặc bạn biết bạn đang làm gì.
Quyền truy cập tệp được đặt ra để cung cấp một hệ thống bảo mật cơ bản cho người dùng. Tìm hiểu cách thức hoạt động của chúng có thể giúp bạn thiết lập chia sẻ cơ bản trong môi trường nhiều người dùng, bảo vệ các tệp tin công khai trên mạng và cung cấp cho bạn manh mối về việc khi có sự cố với quyền sở hữu tệp hệ thống.
Nghĩ rằng bạn có thể giải thích mọi thứ dễ dàng hơn? Có một sự điều chỉnh? Bạn muốn hồi tưởng về những ngày xưa? Hãy nghỉ ngơi và suy nghĩ của bạn trong các ý kiến.