Nếu bạn đã sử dụng Linux một thời gian (và thậm chí cả OS X), bạn có thể sẽ gặp phải lỗi “quyền”. Nhưng chính xác thì chúng là gì, và tại sao chúng lại cần thiết hoặc hữu ích? Chúng ta hãy nhìn vào bên trong.
Quyền Người dùng
Ngày xưa, máy tính là những cỗ máy khổng lồ có giá cực kỳ đắt. Để tận dụng tối đa chúng, nhiều thiết bị đầu cuối máy tính đã được nối với nhau, cho phép nhiều người dùng tiến hành công việc kinh doanh của họ đồng thời. Xử lý và lưu trữ dữ liệu được thực hiện trên máy tính, trong khi bản thân các thiết bị đầu cuối không chỉ là một phương tiện để xem và nhập dữ liệu. Nếu bạn nghĩ về nó, nó khá nhiều về cách chúng tôi truy cập dữ liệu trên “đám mây”; hãy 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 mặc dù có thể thực hiện các thay đổi cục bộ nhưng mọi thứ đều được lưu trữ từ xa.
(Hình ảnh: Thiết bị đầu cuối “câm” của Zenith Z-19; tín dụng: ajmexico)
Để điều này hoạt động, người dùng cá nhân cần phải có tài khoản. Chúng cần có một phần của vùng lưu trữ được phân bổ cho chúng và chúng cần được phép chạy các lệnh và chương trình. Mọi người đều có “quyền của người dùng” cụ thể, quy định họ có thể làm gì và không thể làm gì, họ làm và không có quyền truy cập ở đâu trên hệ thống và họ có thể và không thể sửa đổi tệp của ai. Mỗi người dùng cũng được xếp 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 nhiều người dùng kỳ quặc này, chúng tôi đã thiết lập các ranh giới về những gì người dùng có thể làm. Nhưng những gì họ truy cập? Mọi tệp đều có một tập hợp các 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 tệp đó thuộc về người dùng nào 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, quyền được chia thành ba loại: đọc, ghi và thực thi. Quyền truy cập “Đọc” cho phép người ta xem nội dung của tệp, quyền truy cập “ghi” cho phép người ta sửa đổi nội dung của tệp và “thực thi” cho phép người ta chạy một tập hợp các hướng dẫn, chẳng hạn như tập lệnh hoặc chương trình. Mỗi danh mục 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” có nghĩa là chủ sở hữu, “nhóm” có nghĩa là bất kỳ người dùng nào ở cùng nhóm với chủ sở hữu và “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 chính của bạn, nhưng không cho phép bất kỳ ai bên ngoài nhóm của bạn. Bạn có thể sẽ muốn giới hạn quyền truy cập “ghi” chỉ cho chính mình, trừ khi bạn đang làm việc trên một dự án được chia sẻ nào đó. Bạn cũng có thể tạo một thư mục chia sẻ 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 mà bạn sở hữu trong Ubuntu, chỉ cần nhấp chuột phải vào tệp và chuyển đến “Thuộc tính”.
Bạn có thể thay đổi việc 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ẽ bật nó cho Chủ sở hữu, Nhóm và những người khác đồng thời.
Dòng lệnh
Bạn cũng có thể thực hiện việc này thông qua dòng lệnh. Đi tới thư mục có tệp trong đó và nhập lệnh sau để xem tất 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 trình bày 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 “read”, w là viết tắt của “write” và x là viết tắt của “thực thi”. Các thư mục sẽ được bắt đầu bằng “d” thay vì “-“. Bạn cũng sẽ nhận thấy rằng có 10 khoảng trắng giữ giá trị. Bạn có thể bỏ qua bộ đầu tiên, và sau đó là 3 bộ 3. Bộ đầu tiên 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.
chmod [class][operator][permission] tập tin
chmod [ugoa][+ or –] [rwx] tập tin
Điều này thoạt nghe có vẻ phức tạp, nhưng hãy tin tôi, nó khá dễ dàng. Đầu tiên, hãy xem xét các lớp:
- u: Cái này là của chủ sở hữu.
- g: Cái này dành cho nhóm.
- o: Điều này dành cho tất cả những người khác.
- a: Điều này sẽ thay đổi quyền cho tất cả những điều trên.
Tiếp theo, các toán tử:
- +: 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 một 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ờ, chúng ta hãy đặt nó lại với nhau. Giả sử chúng ta có một tệp có tên “todo.txt” có các quyền sau:
-rw-rw-r–
Tức 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 sau:
-rwxr—–
Tức là chủ sở hữu có toàn quyền và nhóm có thể đọc. Chúng tôi có thể làm điều này trong 3 bước. Đầu 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 ghi cho nhóm.
chmod gw 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 hoặc todo.txt
Chúng ta cũng có thể kết hợp chúng thành một lệnh, như sau:
chmod u + x, gw hoặc 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 ngại người khác xem tệp của mình.
- -rwx——: Chủ sở hữu có đầy đủ quyền, tất cả những người khác không có quyền (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 trong nhóm).
- -rw-r – r–: Chủ sở hữu có thể đọc và ghi, nhóm và những người dùng khác chỉ có thể đọc tệp (hữu ích để lưu trữ tệp cá nhân trên mạng chia sẻ).
- -rw ——-: Chủ sở hữu có thể đọc và ghi, 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 số thứ khác bạn có thể làm với chmod – như setuid và setgid – nhưng chúng hơi chuyên 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 gốc hoặc siêu người dùng và tệp 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ứ do quản trị viên điều hành hoặc với đặc quyền quản trị và những thứ do chính hệ thống điều hành. Do đó, những thứ không thể thiếu đối với hệ thống cần có đặc quyền quản trị viên để thay đổi hoặc truy cập. Bằng cách này, bạn không vô tình làm lộn xộn bất cứ điều gì.
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 “sudo” hoặc “gksudo” để có được các đặc quyền tương đương của Quản trị viên. Trong các bản phân phối khác, bạn chuyển sang “root” hoặc “super-user” để thực hiện hiệu quả điều tương tự cho đến khi bạn đăng xuất.
Lưu ý rằng trong cả hai trường hợp này, việc thay đổi quyền đối với tệp có thể dẫn đến 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 gốc (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 nhiều quyền hơn). Do đó, 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 mình đang làm gì.
Quyền đối với tệp được áp dụng để cung cấp một hệ thống bảo mật cơ bản giữa những người dùng. Tìm hiểu cách chúng hoạt động có thể giúp bạn thiết lập tính năng chia sẻ cơ bản trong môi trường nhiều người dùng, bảo vệ các tệp “công khai” và cung cấp cho bạn manh mối về thời điểm xảy ra 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? Muốn hồi tưởng về ngày xưa? Hãy nghỉ ngơi và đặt suy nghĩ của bạn xuống trong phần bình luận.