我正在学习linux suid,所以我编写了一个小的c++程序,其中包含以下内容来测试它
#include<stdio.h>
int main(){
system("echo 100 >> test.txt");
return 0;
}
-rwsr-xr-x 1 root root 8004 Sep 10 16:19 testtest.txt是一个只能由root修改的文件。
-rw-r----- 1 root root 如果我使用用户帐户运行测试程序,它应该将100添加到空文件中。但是,它出来了:
sh:test.txt:Permission denied为什么?
发布于 2015-01-24 16:51:56
问题是,您调用函数system(),它调用一个shell /bin/sh。并且外壳/bin/sh没有设置suid位。这就是为什么打印Permission denied消息的原因。
您必须用纯c代码编写该部分:
int main() {
FILE *fd = fopen("test.txt", "a");
fprintf(fd, "%s", "100");
fclose(fd);
return 0;
}https://unix.stackexchange.com/questions/180828
复制相似问题