Quyền Linux cho phép chủ sở hữu tệp hoặc thư mục hạn chế quyền truy cập dựa trên mối quan hệ của người truy cập vào từng tệp. Điều này cho phép các lược đồ điều khiển cung cấp các mức truy cập khác nhau cho những người khác nhau.
Bài viết này sẽ trình bày về các cơ chế quản lý quyền và các cách thức để gán quyền cho tệp tin và thư mục và một số tình huống ví dụ chỉ ra việc sửa đổi các quyền được gán có thể là cần thiết.
Các nhóm phân quyền
Trong Linux mỗi file [folder] đều có 3 nhóm phân quyền chính:
- owner: Quyền sở hữu này chỉ áp dụng cho chủ sở hữu của file và không ảnh hưởng đến hoạt động của người dùng khác.
- group: Quyền sở hữu này được áp dụng cho nhóm đã được gán cho file.
- others: Cấp quyền cho những người dùng khác không thuộc hai nhóm trên.
Tuy nhiên có ngoại lệ đó là
chmod [options] [mode] file2 [super user] không bị ràng buộc bởi bất cứ sự phân quyền nào, có toàn quyền trên mọi file của hệ thống.
Các loại phân quyền
Mỗi file có 3 loại quyền cơ bản:
- read: Quyền cho phép người dùng đọc nội dung của file.
- write: Quyền cho phép người dùng viết hoặc thay đổi nội dung của file.
- *execute *: Quyền cho phép người dùng thực thi file.
Cách xem phân quyền của hệ thống
Để xem phân quyền của một file hoặc một folder ta sử dụng câu lệnh
ls -l path/to/file hoặc ls -la path/to/file [để hiện các hidden file]
Output của câu lệnh trên là:
- Kí tự đầu tiên là một cờ đặc biệt để chỉ loại file,
chmod [options] [mode] file
3 với file thông thường,chmod [options] [mode] file
4 với thư mục,chmod [options] [mode] file
5 với thiết bị,chmod [options] [mode] file
6 với liên kết. - 3 ký tự tiếp theo [rwx] thể hiện quyền của owner có mọi quyền đối với file.
- 3 ký tự tiếp theo [rwx] thể hiện quyền của group có mọi quyền đối với file.
- 3 ký tự tiếp theo [r–] thể hiện quyền của others chỉ có quyền đọc file.
- Số nguyên chỉ số lượng liên kết cứng tới file.
- Cuối cùng là tên owner và group, ở đây owner là apache và group là apache
Thay đổi phân quyền
Các thiết lập mặc định của Linux về file nhiều khi sẽ không giải quyết được vấn đề thiết lập hoặc khi bạn muốn chia sẻ quyền cho người dùng khác…May mắn là việc phân quyền cũng không quá phức tạp.
a. Ký hiệu chung
Group Permission
Group PermisionKý hiệuMô tảOwneruChủ sở hữuGroupgNhóm sở hữuOtheroNgười dùng và nhóm khácAllaToàn bộ người dùng và nhóm [tương đương ugo ]Operator
OperatorKý hiệuMô tảAdd+Cấp thêm quyềnRemove–Loại bỏ quyềnAssign=Chỉ định quyền cụ thểb. Sử dụng chmod [options] [mode] file
7
chmod [change mode] là câu lệnh cơ bản nhất để phân quyền file. Có hai cách để phân quyền bằng chmod đó là sử dụng symbolic và octal number:
chmod [options] [mode] file
trong đó options bao gồm:
- -R : áp dụng cho cả sub folder.
- -f : tiếp tục kể cả khi xảy ra lỗi.
- -v : hiển thị quá trình.
VD:
chmod a+r comments.txt
-> Thêm quyền đọc cho tất cả người dùng và nhóm.
chmod u=rw,g=r,o= plan.sh
-> Cho chủ sở hữu quyền đọc và ghi, group sở hữu quyền đọc, những người dùng và nhóm khác không được làm gì.
chmod -R 775 logs
-> Cho chủ sở hữu và group sở hữu full quyền, còn những người khác chỉ được đọc và thực thi.
b. Sử dụng chmod [options] [mode] file
8 và chmod [options] [mode] file
9
chown [change ownership]: Thay đổi “chủ quyền” của file hoặc folder. Cú pháp:
chown [options] [newowner:newgroup] file
Options cũng tương tự như
chmod [options] [mode] file7 ngoài ra thì còn vài tùy chọn như
chmod a+r comments.txt1,
chmod a+r comments.txt2,
chmod a+r comments.txt3 mà tôi sẽ không đề cập đến ở đây mà tập trung vào việc định danh chủ sở hữu mới. Có 5 cách để làm việc này:
Lưu ý: Chủ sở hữu không thể chuyển quyền sở hữu trừ phi họ là
chmod [options] [mode] file2 hoặc sử dụng
chmod a+r comments.txt5. Nhóm sở hữu sẽ được thay đổi bởi chủ sở hữu nếu chủ sở hữu thuộc nhóm đó.Vì vậy, tôi khuyến nghị chạy
chmod [options] [mode] file8 dưới quyền super admin.
chgrp [change group]: Thay đổi nhóm sở hữu, cú pháp:
chgrp [options] group file
Một số quyền cơ bản trong Linux
chmod 777 file.txt
Cho tất cả các người dùng quyền đọc, ghi và thực thi file -> phân quyền này rất nguy nguy hiểm dẫn đến website có thể bị hack.
chmod 775 file.txt
Cho chủ sở hữu quyền đọc và ghi, group sở hữu quyền đọc, những người dùng và nhóm khác không được làm gì
chmod 755 file.txt
Câp quyền cho chủ sở hữu đọc và các người dùng khác chỉ đọc và thực thi, không có quyền ghi
chmod [options] [mode] file0
Cấp full quyền cho user và bảo vệ file khỏi tác động từ các user truy cập của các user khác.
chmod [options] [mode] file1
Cho chủ sở hữu quyền đọc và thực thi, không được phép ghi hoặc thay đổi. Thường sử dụng trong file key.