1. Khái niệm
Thông thường khi một lệnh được thi hành, nó sẽ thi hành với quyền của user đang chạy nó. Ví dụ khi bạn thay đổi password của bạn với lệnh passwd, password mới của bạn được lưu trong /etc/shadow. Với người dùng bình thường, bạn không thể có quyền đọc và ghi file này vì lý do bảo mật, nhưng khi bạn thay đổi password bạn cần phải có quyền ghi file này. Điều này có nghĩa là chương trình passwd sẽ gửi thêm quyền cho bạn và bạn có thể “write” /etc/shadow
$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 25604 2007-04-05 15:54 /usr/bin/passwd
SUID và SGID sẽ xuất hiện với chữ “s” nếu quyền được gán.
Trong lệnh này, bạn sẽ thấy là SUID bit được gán, và lệnh này được owned bởi root
Những quyền được gửi thêm đưa tới cho chương trình là một cơ chế được biết đến với tên gọi: Set User ID (SUID) và Set Group ID (SGID). Khi bạn thi hành một chương trình với SUID bit được enables, bạn sẽ được kế thừa quyền của user hoặc group sở hữu chương trình đó mà không phải là quyền của user đang chạy nó
Để thực hiện SUID/SGID cho một file, bạn có thể:
Code:
chmod u+s /full/path/to/filename
chmod g+s /full/path/to/filename
2. Định danh SUID=root
Cách đơn giản nhất để định danh những file nào có SUID và SGID bit được set, là sử dụng lệnh find. Để tìm tất cả các regular file có root owner, bạn có thể sử dụng lệnh sau:
Code:
find / -perm +4000 -user root -type f -print
find / -perm +2000 -group root -type f -print
Nếu bạn muốn một file không cần thiết phải chạy với SUID hoặc SGID nữa bạn có thể sử dụng:
Code:
chmod u-s /full/path/to/filename
chmod g-s /full/path/to/filename
Lệnh này sẽ replace quyền SUID/SGID bằng quyền x (execute) thông thường – file này sẽ vẫn được thi hành nhưng không phải với quyền của owner/group của nó.