快速业务通道

关于UNIX和Linux系统下SUID、SGID的解析

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-05-08
,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的设备文件,是一个字符设备文件,里面存储了核心程序要访问的数据,包括用户的口令.这个文件不能给一般的用户读写,权限设为:cr——r—— 1 root system 2, 1 May 25 1998 kmem但ps等程序要读这个文件,而ps的权限设置如下:-r-xr-sr-x 1 bin system 59346 Apr 05 1998 ps这是一个设置了SGID的程序,而ps的用户是bin,不是root,不能设置SUID来访问kmem,但大家注意了,bin和root都属于system组,ps设置了SGID,一般用户执行ps,就会获得system组用户的权限,而文件kmem的同组用户的权限是可读,一般用户执行ps就没问题了.但有些人说,为什么不把ps程序设置为root用户的程序,然后设置SUID位,不也行吗?这的确可以解决问题,但实际中为什么不这样做呢?SGID的风险比SUID小得多,出于系统安全的考虑,应该尽量用SGID代替SUID的程序,如果可能的话.下面来说明一下SGID对目录的影响.SUID对目录没有影响.如果一个目录设置了SGID位,那么如果任何一个用户对这个目录有写权限的话,他在这个目录所建立的文件的组都会自动转为这个目录的属主所在的组,而文件所有者不变,还是属于建立这个文件的用户.
Empire CMS,phome.net

 
  三、关于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……
 
  是不是现在显示出错?
 
  $su #chmod 4755 lsusb #su aaa $./lsusb…… 现在明白了吗?本来是只有root用户才能执行的命令,加了SUID后,普通用户就可以像root一样的用,权限提升了.上面是对于文件来说的,对于目录也差不多!
 
  目录的S属性在该目录下创建的任何文件及子目录属于该目录所拥有的组,目录的T属性该目录的所有者及root才能删除该目录.还有对于s与S,设置SUID/SGID需要有运行权限,否则用ls -l后就会看到S,证明你所设置的SUID/SGID没有起作用.
 
  Why we need suid,how do we use suid?
 
  r —— 读访问w —— 写访问x —— 执行许可s —— SUID/SGID t —— sticky位那么 suid/sgid是做什么的? 为什么会有suid位呢?
 
  要想明白这个,先让我们看个问题:如

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号