您没有来错地!为了更好的发展,黑基网已于9月19日正式更名为【安基网】,域名更换为www.safebase.cn,请卸载旧的APP并安装新的APP,给您带来不便,敬请理解!谢谢

黑基Web安全攻防班
安基网 首页 IT技术 网络管理 查看内容

文件访问权限中的SUID/SGID 有什么用处

2008-12-25 11:02| 投稿: Linux

摘要:   来源:xwqlinux's blog  说明:  运行环境:aix 4.3, aix 5.1, aix 5.2  在 AIX 中使用 ls -l 命令查看文件的访问权限,通常都是 r w x ,但...
  来源:xwqlinux's blog  说明:  运行环境:aix 4.3, aix 5.1, aix 5.2  在 AIX 中使用 ls -l 命令查看文件的访问权限,通常都是 r w x ,但有时会发现有些文件的执行权限位不是 "x" 而是 "s". 如:  #ls -l /usr/bin/passwd  -r-sr-xr-x 1 root security 18686 Sep 16 2002 /usr/bin/passwd  这说明 /usr/bin/passwd 文件被设置了SUID. SUID 表示"设置用户ID",SGID表示"设置组ID"。当用户执行一个设置了SUID文件时,用户ID在程序运行过程中被置为文件拥有者的用户ID。 如果文件属主是 root,当用户在程序的执行过程中就成为 root 用户,有着与 root 同样的权限。同样,当一个用户执行设置了SGID文件时,用户的属组在程序执行过程中被置为文件的属组。  为什么是这样呢? 这是由于在AIX 中实际上有两种类型的用户ID。"real user ID"是在登录过程中使用的用户ID。"effective user ID"是在登录后的会话过 程中使用的用户ID,可通过所执行文件的SUID和SGID位来修改。 当一个用户运行一条未设 SUID 的命令时,所创建的进程继承了用户登录时Shell 的权限,此时"real user ID" 和 "effective user ID"是相同的。 当所运行命令的 SUID 位被设置时,进程则继承了命令属主的权限。这时"real user ID" 和"effective user ID"是不相同的。 这就是为什么普通用户,尽管他不能用 more ,cat,pg 命令查看/etc/security/passwd 文件中的内容,但可通过使用 /usr/bin/passwd 命令来修改自己的口令的原因 -- 在执行passwd 命令时,普通用户的"effective user ID"是root, root 用户有权改写 /etc/security/passwd的内容。  用 ls 命令检查文件的权限模式,在它的第四位如果不是"x",而是"s" 或 "S"就是一个设置了SUID程序(有执行权限并且设置了SUID,第四位就是"s"; 如果没有执行权限,但设置了SUID,则就是"S"). 第七位是"s" 或 "S"就是一个设置了SGID程序。可以用 chmod 命令来设置文件的 SUID/SGID.  $ chmod 4xxx filename 为文件设置 SUID (其中x 是 0 ~ 7 的一位数字)  chmod u+s filename  $ chmod 2xxx filename 为文件设置 SGID  chmod g+s filename  $ chmod 6xxx filename 为文件设置 SUID 和 SGID  chmomd ug+s filename  如:  修改前,文件的权限模式是 555  #ls -l aaa  -r-xr-xr-x 1 root system 10 Mar 21 13:08 aaa  #chmod 6555 aaa  #ls -l aaa  -r-s r-s r-x 1 root system 10 Mar 21 13:08 aaa  由 于设置了SUID的文件在执行过程中会使用户的实际权力得到改变,使普通用户可以完成某些只有特定用户才能的任务。我们可以把那些在应用环境中经常一起使 用的系统管理命令写在一程序中,然后编译,将执行文件的属主改为 root 并设置 SUID, 这样当系统管理员不在的情况下,一般用户也可以处理一些常见的系统问题。  例如,需要将以太网接口en1 临时断开,然后激活。可编写简单的 C 程序如下:  # more ttt.c  #include <stdio.h>  main ()  {  system ( "ifconfig en1 " ) ;  system ( "ifconfig en1 down " ) ;  system ( "ifconfig en1 " );  system ( "ifconfig en1 up ");  system ( "ifconfig en1 ");  }  编译完成后,其文件权限模式设为:  #ls -l ttt  -r-s--x--x 1 root dba 4539 Mar 21 16:04 ttt  考虑到系统的安全,对于属主是 root 的文件不要随意设置 SUID, 以免产生安全漏洞。系统管理员应该定期查看系统中有那些SUID和SGID文件。可以用 下面的命令实现:  find / -type f \( -perm -4000 -o -perm -2000 \) -ls

小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里 注册黑基账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!



免责声明:本文由投稿者转载自互联网,版权归原作者所有,文中所述不代表本站观点,若有侵权或转载等不当之处请联系我们处理,让我们一起为维护良好的互联网秩序而努力!联系方式见网站首页右下角。


鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

最新

返回顶部