Phân quyền trên Linux đôi khi có thể khiến bạn thấy hơi “rắc rối”. Cùng học xem làm như thế nào để phân quyền một cách thích hợp, kể cả trong những trường hợp đặc biệt
Phân quyền trên Linux là một vấn đề mà bất cứ người dùng nào cũng sẽ phải gặp phải ngay từ khi họ bắt đầu sử dụng Linux. Chúng ta cần thực thi các đoạn scripts, chỉnh sửa files, thực thi các tiến trình để quản lí hệ thống một cách hiệu quả hơn. Nhưng điều gì sẽ xảy ra khi chúng ta thấy thông báo Permission Denied? Bạn muốn hiểu tại sao lại có chuyện này xảy ra? Và giải pháp cần thực hiện để khắc phục tình trạng đó
Tôi sẽ trình bày nhanh về một số cách chúng ta thường sử dụng để tính toán quyền hạn, và sau đó chúng ta sẽ tập trung vào những quyền hạn đặc biệt trong Linux.
Mục lục
Phương thức Symbolic
Phương thức Symbolic sử dụng cú pháp như sau
[cloudzone@server ~]$ chmod WhoWhatWhich file | directory
Trong đó
- Who: Tham số về định danh. Có 1 trong 4 giá trị u, g, o, a (user, group, other, all)
- What: Tham số về hành động. Có 1 trong 3 giá trị +, -, = (add, remove, set exact)
- Which: Tham số về quyền hạn. Có 1 trong 3 giá trị r, w, x (read, write, execute)
An example of this is if I want to add the read and write permissions to a file named test.txt for user and group, I use the following command:
Một ví dụ là nếu tôi muốn thêm quyền read và write vào một files tên là test.txt cho user và group. Tôi sẽ sử dụng câu lệnh sau
[cloudzone@server ~]$ chmod ug+rw test.txt
Phương thức Numeric
Phương thức Numeric, theo kinh nghiệm cá nhân của tôi, đây là cách tốt nhất để học và luyện tập về phân quyền. Nó dựa trên cú pháp sau
[cloudzone@server ~]$ chmod ### file | directory
Ở đây, từ trái sang phải, kí tự # nói về một level truy cập. Có 3 level: user, group, and others. Và giá trị của mỗi level được đặt như sau
- Bắt đầu bằng 0
- Nếu có quyền read: Cộng thêm 4
- Nếu có quyền write: Cộng thêm 2
- Nếu có quyền Execute: Cộng thêm 1
Ví dụ quyền hạn sau
-rw-r-x---
Sẽ được chuyển thành 650. Giải thích như sau
- Quyền hạn của user là rw- hay 4+2=6
- Quyền hạn của group là r-x hay 4+1=5
- Quyền hạn của others là — hay 0
Đưa vào cú pháp sẽ là như sau
[cloudzone@server ~]$ chmod 650 test.txt
Giải thích các quyền đặc biệt
Quyền hạn đặc biệt tạo ra level truy cập thứ 4 bên cạnh user, group và other. Quyền hạn đặc biệt cho phép thêm một đặc quyền vượt lên những quyền hạn thông thường. Mỗi level có một quyền hạn đặc biệt riêng cho nó. Hãy phân tích từng trường hợp
user + s (pecial)
Còn được nói tới là SUID, một quyền đặc biệt cho user access level có một chắc năng duy nhất. Một file với SUID luôn được thực thi với user sở hữu files đó, không quan tâm tới user nào đang thực thi câu lệnh. Nếu chủ sở hữu file không có quyền execute, bạn có thể dùng một chữ S in hoa ở đây
Để thấy rõ hơn vấn đề này, hãy nhìn vào câu lệnh /usr/bin/passwd. Câu lệnh này, mặc định có quyền SUID được gán
[cloudzone@server ~]$ ls -l /usr/bin/passwd -rwsr-xr-x. 1 root root 33544 Dec 13 2019 /usr/bin/passwd
group + s (pecial)
Còn được biét tới là SGID, quyền hạn đặc biệt này có một số chức năng như sau
- Nếu được đặt trên một files, nó cho phép files ày được thực thi như group sở hữu files đó (Tương tự SUID)
- Nếu được đặt trên một thư mục, bất cứ files nào tạo trong thư mục đó sẽ được cấp quyền cho group sở hữu
[cloudzone@server article_submissions]$ ls -l total 0 drwxrws---. 2 cloudzone cloudzone 69 Apr 7 11:31 my_articles
Điều này khá hữu ích cho thư mục được chia sẻ để làm việc chung giữa các thành viên của group. Bất cứ member nào trong group có thể truy cập vào bất cứ file mới nào tạo ra. Điều này cũng tương tự cho quyền thực thi các files này. SGID thực sự rất mạnh khi được sử dụng đúng cách
Lưu ý nếu group sở hữu không có quyền thực thi, thì chúng ta sẽ dùng chữ S in hoa ở đây
other + t (sticky)
Quyền hạn đặc biệt cuối cùng có thể hơi rối một chút. Quyền hạn này không ảnh hưởng tới các files riêng lẻ. Nhưng ở cấp độ thư mục, nó ngăn chặn việc xoá files. Chỉ có người sở hữu (và root) của file này có thể xoá file/và thư mục. Một ví dụ ở thư mục /tmp
[tcarrigan@server article_submissions]$ ls -ld /tmp/ drwxrwxrwt. 15 root root 4096 Sep 22 15:28 /tmp/
Quyền hạn này được ghi lại với chữ t
Gán các quyền hạn đặc biệt
Để gán các quyền hạn đặc biệt, bạn có thể dùng 1 trong 2 phương thức phân quyền được nói ở trên. Symbolic hay numerical
Hãy thử gán SGID cho thư mục community_content
Để sử dụng phương thức symbolic, bạn có thể làm như sau
[cloudzone@server article_submissions]$ chmod g+s community_content/
Nếu dùng phương thức numerical bạn sẽ thêm chữ số thứ 4 vào dãy số ở trên câu lệnh chmod.
- Bắt đầu bằng 0
- SUID=4
- SGID=2
- Sticky=1
Cú pháp là
[cloudzone@server ~]$ chmod X### file | directory
Trong X là chữ số thứ 4 được nhắc tới ở trên
Đây là câu lệnh để gán SGID vào thư mục community_content sử dụng phương thức numerical
[cloudzone@server article_submissions]$ chmod 2770 community_content/ [cloudzone@server article_submissions]$ ls -ld community_content/ drwxrws---. 2 cloudzone cloudzone 113 Apr 7 11:32 community_content/
Blog VPS GPU
Giá thuê VPS GPU treo game 2023: Hướng dẫn thuê và cài đặt chi tiết
Bạn là một game thủ đam mê, luôn tìm kiếm trải nghiệm chơi game tối [...]
Blog Cloud VPS VPS GPU
Vì sao nên thuê VPS GPU tại Cloudzone
Trong vô số những nhà cung cấp dịch vụ thuê VPS GPU trên thị trường, [...]
Blog Cloud VPS VPS GPU
Giải đáp những thắc mắc về dịch vụ thuê VPS có GPU
Bạn đang tìm kiếm một giải pháp VPS mạnh mẽ và hiệu suất cao để [...]
Blog Cloud VPS
Bảng giá thuê VPS GPU mới nhất năm 2023
Trong thế giới công nghệ ngày nay, VPS (Virtual Private Server) có GPU đóng vai [...]
Cloud VPS Blog
VPS GPU: Đỉnh cao hiệu suất với lợi ích & ứng dụng vượt trội
Trong thế giới công nghệ đầy cạnh tranh hiện nay, việc nâng cao hiệu suất [...]
Cloud VPS
VPS có GPU và sức mạnh xử lý đồ họa, phân tích dữ liệu của nó
VPS có GPU là lựa chọn tuyệt vời cho việc xử lý đồ họa cao [...]