Chinaunix
标题:
求教CentOS上文件S位的奇怪问题
[打印本页]
作者:
爱洞特漏
时间:
2010-11-27 10:31
标题:
求教CentOS上文件S位的奇怪问题
本帖最后由 爱洞特漏 于 2010-12-30 11:42 编辑
1. main部分如下:
int main() {
system("ls -la /root");
return 0;
}
复制代码
2. 编译:
gcc -o ls_root ls_root.c
3. 执行:
chmod 4777
./ls_root
当在Debian或者FreeBSD上都能用普通用户查看/root下的全部文件
但在CentOS上就不行,不知道是什么原因,请大家帮忙!
其它说明:
a. 非selinux的问题,当完全关闭selinux的情况下问题依旧。
b. CentOS环境是5.5,包括64位和32位环境都没测试通过。
作者:
john737
时间:
2010-11-28 23:26
ubuntu上可以运行,centos上不可以。。。刚开始的时候怀疑系统禁止对脚本setuid,而system命令是调用sh -c的,后来添加了一行access的做测试,发现还是读不了/root。 查看uid和euid,分别是当前用户的uid和0,相当诡异啊
作者:
samlumengjun
时间:
2010-11-29 17:12
在centos环境下,你要在程序头上加上setuid(0);这么一句.
作者:
john737
时间:
2010-11-30 21:45
楼上正解,centOS使用access检查访问权限,而access使用的是uid而非euid,所以S位无效。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2