Bài 16 Thay đổi permission với setuid, setgid, va sticky bits
1. SUID: user + s (special): là quyền đặc biệt được gán cho user. Có nghĩa là một người dùng không phải là chủ sở hữu của ứng dụng cũng có thể chạy ứng dụng như chính chủ sở hữu.
vd: chmod u+s file1.txt
Câu lệnh: ll /usr/bin/passwd mặc định quyền SUID được gán
2. SGID: group + s (special): Quyền hạn này có một số tính năng như sau
- Nếu được đặt trên 1 file thì nó cho phép file này được thực thi như group sở hữu file đó (tương tự như SUID)
- Nếu được đặt trên 1 thư mục thì bất cứ file, thư mục nào được tạo ra trong thư mục đó sẽ được cấp quyền cho group chủ sở hữu.
3. Sticky: other + t: Người dùng chỉ có thể xóa những file mà họ tạo ra trong thư mục được thiết lập sticky bit.
Gán các quyền đặc biệt:
* Nếu sử dụng phương thức symbolic, bạn có thể làm như sau: chmod g+s
vd: gán SGID cho thư mục phanmem: #chmod g+s phanmem/
* Nếu dùng phương thức numerical bạn sẽ thêm chữ số vào dãy số ở trên câu lệnh chmod
Cú pháp: chmod X### file | directory
- Bắt đầu bằng 0
- SUID=4
- SGID=2
- Sticky=1
Thực hành các ví dụ:
1. Gán SGID
Vd. Tạo thư mục Public thuộc quyền sở hữu của nhóm nhansu và user ns1, gán SGID cho thư mục Public. Login vào tài khoản ns1 để tạo 1 file có tên: vb1.txt. Kiểm tra xem file vừa tạo có thừa hưởng các quyền như thư mục Public hay không?.
b1. tạo user và group nhân sự (xem lại bài cũ)
b2. Tạo thư mục Public và gán chủ sở hữu là group nhansu và ns1(xem lại bài cũ)
b3. Login vào tài khoản vừa tạo ns1 và tạo ra 1 file abc.txt trong thư mục Public sau đó kiểm tra chủ sở hữu của file này.
File abc.txt vừa tạo thuộc ns1
b3. Gán SGID: chmod -R 2777 Public
Sau khi gán xong đăng nhập vào tài khoản ns1 tạo file vb1.txt. Sau đó kiểm tra quyền và chủ sở hữu của tất cả các file có trong thư mục Public
Các bạn thấy sự khác biệt ở đây. File abc.txt thuộc sở hữu ns1. nó không kế thừa nhóm sở hữu nhansu của thư mục Public. Trong khi đó sau khi gán SGID cho thư mục Public thi các file tạo ra như vb1.txt nó sẽ nhận nhóm sở hữu nhansu từ thư mục Public
Tạo thêm user ns2 thuộc group nhansu và đăng nhập ns2 tạo thêm file vb2.txt trong thư mục Public. Kiểm tra quyền và nhóm sở hữu
File vừa tạo ra nhận kế thừa group nhansu từ thư mục cha Public
2. Gán sticky: Người dùng chỉ có thể xóa những file mà họ tạo ra trong thư mục được thiết lập
b1. Ở ví dụ trên các bạn thử đăng nhập vào ns1 để xóa file vb2.txt do ns2 tạo ra và đăng nhập ns2 xóa file vb1.txt do ns1 tạo xem xóa được không nhé
Xóa thành công.
b2. Gán sticky bit cho thư mục Public
#chmod -R +t Public hoặc #chmod -R 1770 Public
Sau khi gán xong vào ns1 tạo file bt1.txt và vào ns2 tạo file bt2.txt. Sau đó thử dùng ns1 xóa file ns2 tạo ra và ngược lại xem xóa được không?.
Tài khoản ns2 không thể xóa file bt1.txt của ns1. ns2 xóa được file bt2.txt do ns2 tạo ra.
Chúc các bạn nghiên cứu vui vẽ