Chinaunix

标题: 求教CentOS上文件S位的奇怪问题 [打印本页]

作者: 爱洞特漏    时间: 2010-11-27 10:31
标题: 求教CentOS上文件S位的奇怪问题
本帖最后由 爱洞特漏 于 2010-12-30 11:42 编辑

1. main部分如下:

  1. int main() {
  2.         system("ls -la /root");
  3.         return 0;
  4. }
复制代码
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