1. Tôi làm một phép thử với SGID như sau:
+ Login với user quanta, tôi tạo một file yourscript.sh có nội dung:
Code:
#!/bin/bash
echo "test" >> yourlog.log
File yourscript.sh này có permission là:
-rwxrwxr-x 1 quanta quanta
+ chmod yourscript.sh và chạy nó lần đầu tiên để tạo file yourlog.log:
Code:
$ sudo chmod +x yourscript.sh
$ sh yourscript.sh
Bây giờ tôi đã có file yourlog.log, permission của nó là:
-rw-rw-r-- 1 quanta quanta
Bạn để ý là những user khác không cùng nhóm với quanta sẽ không có quyền write trên file này
+ Tiếp theo, tôi thử SGID cho yourscript.sh:
Code:
$ sudo chmod g+s yourscript.sh
Rồi login sang một user khác không cùng nhóm với quanta và chạy xem sao. Về lý thuyết thì tôi đã echo được "test" thêm vào yourlog.log nhưng test thử thì bị Permission denied. Vấn đề này có phải do bash shell drop permission không hay còn liên quan gì đến EUID, mong mọi người giải thích giúp
2. Mọi người đều biết: sudo cho phép một người dùng bình thường có thể thực thi một lệnh với đặc quyền superuser hoặc root. Trong /etc/sudoers tôi thêm:
quanta ALL=(ALL) ALL
Login với root, tôi tạo một file test.log với permission như sau:
-rw-rw-r-- 1 root root
Sau đó login sang user quanta (không thuộc root group), và thử:
Code:
$ sudo echo "sudo troubleshoot" >> test.log
thì gặp: bash: test.log: Permission denied
Nhờ mọi người giải thích và thảo luận thêm về trường hợp này