对于SUID,有这样的说法:当一个文件有SUID属性时(即在user的x位上为s),则执行此文件的其它用户在执行此文件时,具有该文件所有者的权限.根据这个说法,我作了一个简单的测试脚本tmp.脚本的内容如下:
#!/bin/bash
whoami
echo %26quot;cd /var/pubspace%26quot;
cd /var/pubspace
echo
echo %26quot;cd wjz%26quot;
cd wjz
echo
echo %26quot;ls -l /var/pubspace/wjz%26quot;
ls -l /var/pubspace/wjz
echo
echo %26quot;.the end.%26quot;
1.创建两个不同组用户a 和b.以及目录wjz.wjz对于a为拥有者,rwx均可.对于b为others,rwx均不可.这已经过测试是没有问题的.
2.测试脚本tmp的所有者为a.并设属性为rwxr-xr-x,这样对于a执行脚本tmp,脚本内的所有目录都可以进入,是不会有出错的提示的.对于b,由于b对目录wjz的rwx的权限都没有,所以在执行tmp脚本时,%26quot;cd wjz%26quot;和%26quot;ls -l /var/pubspace/wjz%26quot;会出现%26quot;权限不够%26quot;的提示,这是预料中的.
3.改测试脚本tmp的属性为rwsr-xr-x,这样,按道理说,b执行tmp时,具有a的权限.这样在执行到%26quot;cd wjz%26quot;和%26quot;ls -l /var/pubspace/wjz%26quot;这两行时应该不会有问题的,但是仍然出现了%26quot;权限不够%26quot;的提示.这到底是为什么呢?请高手指点.不胜感谢!!!!
QUOTE: 原帖由 jiazhengw 于 2005-11-29 08:39 发表
对于SUID,有这样的说法:当一个文件有SUID属性时(即在user的x位上为s),则执行此文件的其它用户在执行此文件时,具有该文件所有者的权限.根据这个说法,我作了一个简单的测试脚本tmp.脚本的内容如下:
#!/bin/bash
... suid对脚本无效
因为在系统中,你的脚本是以“bash 某某”的方式运行的,系统中的进程标识是bash而不是shell文件,bash并没有suid,所以你的这个实验不会有结果的
如果你想做这个实验,最好用C来写
学习
原来是这样的,我明白了,谢谢2楼的E兄!
难怪我将bash拷贝到另一个地方并加上s属性也不行,原来是这个样子。linux真是一个安全的操作系统呀!!!
为了安全方面的考虑,脚本是不能设置suid
QUOTE: 原帖由 bingosek 于 2005-11-29 15:10 发表
为了安全方面的考虑,脚本是不能设置suid 不是安全问题,而是根据现在的Unix机里,脚本是无法设置suid的,因为真正运行的进程是脚本的解释程序而不是脚本本身
当然,理论上可以让脚本的解释程序获得脚本的suid状态并且动态的改变自己的suid属性,然后在脚本运行完毕后再改回去。不过这样的整个系统架构的修改可以说不算小,而且也不符合POSIX规范(POSIX规范中没有允许一个正在运行的进程动态修改自身的suid属性)
如果照楼上ecloud兄的说法,我将bash命令复制到一个目录里,并改为suid属性,属root所有。那一般用户执行这个bash的话,就有了root的权限了。可是我加上suid以后,连root本身都执行不了这个命令(./bash)。如果去掉suid,则root就可以执行了,这又是为什么呢?再次请教!
我刚才实验了一下,是可以的
是不是打开了SELinux?或者系统中有别的什么安全防护的软件,可能会屏蔽掉执行suid的bash这种不安全的访问
现在我换了一台linux的机子(RH9),现在可以用普通用户执行加了suid的bash命令。可是在我用root将passwd文件的wjz帐号的shell改为/home/wjz/bash(我将/bin/bash拷贝到/home/wjz下),再将/home/wjz/bash的所有者改为root,并置suid属性。重新用wjz帐号登录,可以登入。按道理来说,现在的wjz也有root的权限呀,但是还是只有wjz的权限,系统的文件还是不能修改内容。这是为什么呀?另外SELinux是什么东东?怎没听说过?谢谢指教!
|
|
< |