请教大虾关于SUID的问题
  
对于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是什么东东?怎没听说过?谢谢指教!
<
  如何删除 属性为(c-w-r-S-wt)的文件
  关于修改挂载点的问题
  帮忙啊,拜托各位!!!
  有浏览器能支持vbscripts吗?
  求救!!!!
  请问libcups.so.2这个文件在哪能找到?
  请教!安装ati X700驱动程序~!
  sudo 能否执行 shell script
  如何在redhat linux9下,看系统都开放了什么端口,以及各个端口的用途?
  我装完debian后用base-configure重新配置的时候为什么菜单显示乱码
  (可能重复了)关于linux交换分区的几个问题?
  REDHAT主流版本简介(AS,WS,ES)
  怎样清除SWAP里的文件
  修改Linux的系统默认语言
  硬盘安装RHEL 3 后进图形界面花屏。
  请教服务器装RH Linux9
  如何在本本上实现鼠标和触摸板同时工作?
  linux 下怎么样下载流媒体文件?
  find |wc这个命令的含义
  求助 我的电脑里进入Linux中命令行模式中 中文出现乱码