Tôi đang gặp vấn đề với setuid và setgid. Tôi đã viết mã C này:
int main() {
setuid(0);
setgid(0);
system("/path/to/script.sh");
return 0;
}
Biên dịch nó bằng gcc:
gcc test.c -o test
Sau đó tôi đã sử dụng chmod +s
. Trong script.sh
chỉ có id
chỉ huy. Dưới đây là các quyền cho test
thực thi:
-rwxr-sr-x 1 root root 8464 mag 15 20:14 test
Khi tôi thực hiện chương trình, tôi nhận được đầu ra sau:
uid=1000(user) gid=1000(user) gruppi=1000(user)
Tại sao tôi không nhận được đầu ra của id
thực hiện bởi root?