是不是在平常情况下一个用户的实际ID和有效ID是一样的,但使用su命令使他拥有超级用户的权限时,其有效ID就变成了超级用户的ID,实际ID不变。 这些地方不怎么明白。
对于权限许可来讲,其实真实id是无意义的,是否有权限,是有效id决定的,真实id只起一个继承的作用,类似于某些函数保存参数,比如sigaction或sigprocmask的最后一个参数的作用
若有误解,请指正
原帖由 湖光倒影 于 2006-8-19 08:42 发表是不是在平常情况下一个用户的实际ID和有效ID是一样的,但使用su命令使他拥有超级用户的权限时,其有效ID就变成了超级用户的ID,实际ID不变。 这些地方不怎么明白。
>>>>>>su以后用户就变为su对应的用户了,实际ID和有效ID都应该改变了。>>实际ID和有效ID不一致的情况会出现在就像上面有位仁兄说得那样加了s权限>>等可以变更用户权限,但是不切换用户的情况下。>>>>
su root后有效id与实际用户都是root,因为su调用的是setuid而不是seteuid,具体可以先了解一下setuid与seteuid的区别
原帖由 mq110 于 2006-8-19 11:37 发表[root@Firewall ~]# ls -al /bin/su-rwsr-xr-x 1 root root 61927 Jun 20 2005 /bin/su设置了s位.也就是在设置了 设置-用户-id位.允许非特权用户交换实际ID和有效用户ID,/bin/su这个程序的有效用户I ...
原帖由 mq110 于 2006-8-19 11:37 发表[root@Firewall ~]# ls -al /bin/su-rwsr-xr-x 1 root root 61927 Jun 20 2005 /bin/su
设置了s位.也就是在设置了 设置-用户-id位.允许非特权用户交换实际ID和有效用户ID,/bin/su这个程序的有效用户I ...
恩,我去看看
[root@Firewall ~]# ls -al /bin/su-rwsr-xr-x 1 root root 61927 Jun 20 2005 /bin/su
设置了s位.也就是在设置了 设置-用户-id位.允许非特权用户交换实际ID和有效用户ID,/bin/su这个程序的有效用户ID 是0 (root) 因为拥有者是root.实际ID 是那个非特权用户执行它, 它的ID就是这个非特权用户的ID, 可能是1000,可能是1001 等等 .
因为设置了s位, 那么调用setreuid这样的函数就可以交换两个ID了。
具体的请参考<<Unix环境高级编程>> 第8章.
原帖由 零二年的夏天 于 2006-8-19 10:20 发表应该是这样吧。记得几年前有过一个这样讨论的帖子。我也不懂,等待讲解下:)
原帖由 零二年的夏天 于 2006-8-19 10:20 发表应该是这样吧。记得几年前有过一个这样讨论的帖子。
我也不懂,等待讲解下:)
对这有一贴,但是没解决。http://bbs.chinaunix.net/viewthread.php?tid=342124这还有一贴是关于su root和 su - 的区别的帖子http://bbs.chinaunix.net/viewthread.php?tid=534037在这个帖子里,两位高手出现了意见不统一一个说su切换后,不是真正的root一个说su切换后,就是真正的root
[ 本帖最后由 湖光倒影 于 2006-8-19 11:40 编辑 ]
应该是这样吧。记得几年前有过一个这样讨论的帖子。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(7)
对于权限许可来讲,其实真实id是无意义的,是否有权限,是有效id决定的,真实id只起一个继承的作用,类似于某些函数保存参数,比如sigaction或sigprocmask的最后一个参数的作用
若有误解,请指正
>>
>>
>>su以后用户就变为su对应的用户了,实际ID和有效ID都应该改变了。
>>实际ID和有效ID不一致的情况会出现在就像上面有位仁兄说得那样加了s权限
>>等可以变更用户权限,但是不切换用户的情况下。
>>
>>
su root后有效id与实际用户都是root,因为su调用的是setuid而不是seteuid,具体可以先了解一下setuid与seteuid的区别
恩,我去看看
[root@Firewall ~]# ls -al /bin/su
-rwsr-xr-x 1 root root 61927 Jun 20 2005 /bin/su
设置了s位.
也就是在设置了 设置-用户-id位.允许非特权用户交换实际ID和有效用户ID,
/bin/su这个程序的有效用户ID 是0 (root) 因为拥有者是root.
实际ID 是那个非特权用户执行它, 它的ID就是这个非特权用户的ID, 可能是1000,可能是1001 等等 .
因为设置了s位, 那么调用setreuid这样的函数就可以交换两个ID了。
具体的请参考<<Unix环境高级编程>> 第8章.
对这有一贴,但是没解决。
http://bbs.chinaunix.net/viewthread.php?tid=342124
这还有一贴是关于su root和 su - 的区别的帖子
http://bbs.chinaunix.net/viewthread.php?tid=534037
在这个帖子里,两位高手出现了意见不统一
一个说su切换后,不是真正的root
一个说su切换后,就是真正的root
[ 本帖最后由 湖光倒影 于 2006-8-19 11:40 编辑 ]
应该是这样吧。
记得几年前有过一个这样讨论的帖子。
我也不懂,等待讲解下:)