Vì Linux là hệ điều hành đa người dùng, nó có cơ chế đặt và quản lý quyền file đảm bảo chỉ tiến trình và user được ủy quyền truy cập thư mục và file. Khi dùng Linux, bạn có thể gặp trường hợp không sửa được file/thư mục vì lỗi "Permission denied", chỉ ra bạn không có đặc quyền cần thiết. Hướng dẫn này chỉ cách thay đổi quyền file đệ quy trong Linux để cài đặt quyền áp dụng cho sub-folder và file.
Cách kiểm tra quyền file trong Linux
Khi lỗi "permission denied" xảy ra trên thao tác file/thư mục, bắt đầu bằng kiểm tra quyền cấp cho user, group và other.
Để làm vậy, dùng lệnh ls -l. Ví dụ, sau là quyền cho file/thư mục trong "/var".
Output trên chứa thông tin cụ thể.
- Cột đầu biểu diễn quyền file/thư mục. Chữ cái đầu cột chỉ loại:
d= thư mục,l= symbolic link,-= file thường. - 9 ký tự còn lại chia thành 3 nhóm:
uuser,ggroup,oowner chỉ quyền file/thư mục.r= "read",w= "write",X= "execute".
Khi biết quyền file thư mục/file làm việc, bạn dễ dàng thay đổi.
Cách dùng chmod thay đổi quyền file
Lệnh chmod là cách dễ nhất thay đổi quyền file Linux. Cú pháp chung:
chmod {permission}{operator}{mode}
- Permission: Quyền cho user, group, owner, hoặc all.
- Operator: Chỉ quyền cho assignee:
+cấp quyền,-từ chối,=chỉ định quyền set. - Mode: Quyền set:
rread,wwrite,xexecute.
Ví dụ, từ chối mọi người write access thư mục backup trong "/var", dùng lệnh:
sudo chmod -w /var/backups
Mặc dù đổi quyền với chmod hiệu quả, nó chỉ đổi quyền cho thư mục/file chỉ định.
May mắn thay, bạn có thể thay đổi quyền file đệ quy cho thư mục/file và sub-thư mục/file. Dùng tùy chọn đệ quy -r của chmod.
Ví dụ, đệ quy xóa quyền read cho "/var/backup" và tất cả file/sub-thư mục. Quyền hiện tại:
drwxrwxrwx 2 root root 4096 Jul 15 06:25 backups
Chạy chmod đệ quy đổi quyền:
sudo chmod –r -r /var/backups
Bây giờ bạn thấy quyền đã thay đổi.
Đổi quyền đệ quy với find
Thông thường, bạn không set file và thư mục với quyền giống nhau. Vì bạn cần quyền execute để cd vào thư mục. Tuy nhiên, hầu hết file không cần quyền execute này.
Để khắc phục, dùng tiện ích find trong Linux. Cho phép chỉ tìm file hoặc thư mục cụ thể và set quyền trên chúng.
Lấy ví dụ thư mục "/var/log". Thư mục chứa cả file và thư mục.
Để set quyền cụ thể cho chỉ file, dùng find với tùy chọn -type f.
Ví dụ lệnh:
sudo find /var/log/ -type f -exec chmod 777 {} \;
Trong ví dụ, dùng find search "/var/log" cho file, rồi set read, write, execute cho user, group, all.
Cũng làm tương tự cho thư mục. Chỉ định -type d để chỉ lấy thư mục.
Ví dụ:
sudo find /var/log/ -type d -exec chmod 755 {} \;
Trong ví dụ, chỉ set permission 755 cho thư mục, không phải cả file và thư mục.
Bạn xác minh bằng lệnh ls -la.
Bạn sẽ thấy tất cả file có permission 777, thư mục có 755.
Kết thúc
Biết cách đổi quyền file Linux là kỹ năng thiết yếu, giúp ngăn truy cập và sửa đổi trái phép file/thư mục. Tiếp theo, bạn cũng có thể đổi quyền sở hữu file để hạn chế truy cập hoặc dùng access control list để kiểm soát quyền file tinh vi hơn.