加入收藏 | 设为首页 | 会员中心 | 我要投稿 佛山站长网 (https://www.0757zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Unix/Linux中实际用户ID,有效用户ID与保存设置用户ID

发布时间:2013-10-18 09:47:16 所属栏目:Linux 来源:站长网
导读:real user ID:实际用户ID,指的是进程执行者是谁 effective user ID:有效用户ID,指进程执行时对文件的访问权限 saved set-user-ID:保存设置用户ID,作为effective
real user ID:实际用户ID,指的是进程执行者是谁

effective user ID:有效用户ID,指进程执行时对文件的访问权限

saved set-user-ID:保存设置用户ID,作为effective user ID的副本,在执行exec调用时后能重新恢复原来的effectiv user ID.

上面这三个ID是相对于进程而言的.

set-user-ID:设置用户ID,这是相对于文件来说的.设置了set-user-ID位的可执行程序,执行时,进程的effective user ID与saved set-uesr-ID都为程序文件所属用户的ID,些时real user ID与effective user ID就不一定相等了.这类程序称之为SUID程序,这类程序有特殊的用途.典型的例子:passwd程序,ping程序等.

passwd程序是要修改用户密码,此时是要修改/etc/passwd或修改/etc/shadow文件(有必要时),然而一般用户没有修改这两个文件的权限.passwd程序设置了set-user-ID位的,并且该文件的所有都是root,所以,一般用户执行时,也具有了root的权限.

ping程序也如此,因为ping程序要产生原始套接字(raw),所以需要有root的权限.然而一般用户之所以能用ping程序,就是因为ping程序的所有都是root用户,并且它设置了set-user-ID位.

为一可执行程序设置set-user-ID位:

pds@FSSR:~> su root

口令:

FSSR:/home/pds # chown root suid

FSSR:/home/pds # ll suid

-rwxr-xr-x 1 root users 7702 2008-08-10 11:28 suid

FSSR:/home/pds # chmod u+s suid

FSSR:/home/pds # ll suid

-rwsr-xr-x 1 root users 7702 2008-08-10 11:28 suid

FSSR:/home/pds # exit

exit

相对的,没有设置set-user-ID位的可执行程序,称之为非SUID程序,该程序执行时,real user ID与effective user ID相等.

setuid可以修改real user ID,effective user ID和saved set-user-ID这三个值,但是要用权限.

这是函数原型:

int setuid(uid_t uid)

1.如果用户(当前调用的用户)有超级用户权限,则real user ID,effective user ID和saved set-user-ID都将设置为参数uid的值.

2.如果用户没有超级用户权限,仅当参数uid等于real user ID或saved set-user-ID时,effective user ID被设置为参数uid的值,real user ID和saved set-user-ID不变;否则返回错误.

这是自己按自己的理解总结的 ^_^

(编辑:佛山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读