关于UNIX和Linux系统下SUID、SGID的解析
,foo用户的uid和gid为200,201,kevin运行myfile程序形成的进程的euid=uid=204,egid=gid=202,内核根据这些值来判断进程对资源访问的限制,其实就是kevin用户对资源访问的权限,和foo没关系. 如果一个程序设置了SUID,则euid和egid变成被运行的程序的所有者的uid和gid,例如kevin用户运行myfile,euid=200,egid=201,uid=204,gid=202,则这个进程具有它的属主foo的资源访问权限. SUID的作用就是这样:让本来没有相应权限的用户运行这个程序时,可以访问他没有权限访问的资源.passwd就是一个很鲜明的例子. SUID的优先级比SGID高,当一个可执行程序设置了SUID,则SGID会自动变成相应的egid.下面讨论一个例子:UNIX系统有一个/dev/kmem的设备文件,是一个字符设备文件,里面存储了核心程序要访问的数据,包括用户的口令. ![]() ![]() ![]() ![]() ![]() ![]()
三、关于SUID和SGID的编程和SUID和SGID编程比较密切相关的有以下的头文件和函数:#include #include uid_t getuid(void);uid_t geteuid(void);gid_t getgid (void);gid_t getegid (void);int setuid (uid_t UID);int setruid (uid_t RUID);int seteuid (uid_t EUID);int setreuid (uid_t RUID,uid_t EUID);int setgid (gid_t GID);int setrgid (gid_t RGID);int setegid (git_t EGID);int setregid (gid_t RGID, gid_t EGID);具体这些函数的说明在这里就不详细列出来了,要用到的可以用man查. SUID/SGID :假如你有文件a.txt #ls -l a.txt -rwxrwxrwx #chmod 4777 a.txt -rwsrwxrwx ======>注意s位置#chmod 2777 a.txt -rwxrwsrwx ======>注意s位置#chmod 7777 a.txt -rwsrwxswt ======>出现了t,t的作用在内存中尽量保存a.txt,节省系统再加载的时间. 现在再看前面设置 SUID/SGID作用:#cd /sbin #./lsusb…… #su aaa(普通用户) $./lsusb…… |
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |