Linux/Unix中的SUID和SGID文件权限和在CVS项目管理中的应用

王朝system·作者佚名  2006-01-08
宽屏版  字体: |||超大  

当你使用passwd改变自己的口令时,你需要访问/etc/shadow文件,但作为普通用户你并没有这个权限。这时系统通过一种附加权限来实现你对该文件的访问。

当你执行一个设置了suid位的程序时,你就继承了该程序的属主权限,而没有设置suid位的程序在执行时只拥有执行该程序的用户的权限。

下面列出 /usr/bin/passwd的文件属性

-r-s--x--x 1 root root 15368 5ôâ 29 2002 /usr/bin/passwd

可以看到,所有者执行位设置为s

而设置了sgid位的程序将以程序属主所在组的权限来执行。

这里,你执行passwd时,你是以root的权限来执行的。

suid位和粘滞位给目录一个额外的文件移动权限。用户对目录有写权限就可以使用户增加和删除该目录下的任何文件,如果该目录的粘滞位被设置,则只有当你是如下用户时文件才能被删除:设置粘滞位的目录的属主,要被删除的文件的属主,root用户。

目录也可以设置sgid位,如果一个目录设置了sgid位,任何加到该目录下的新文件都自动继承该目录的组,用来代替生成文件的用户的组。

-------------------------------------------------

sgid的应用

众所周知的cvs,本身对用户和项目权限的管理非常薄弱,这就需要我们使用系统对用户的目录文件管理的功能来扶助实现。

在建立新项目时首先建立用于开发该项目的组,如:dxc

将开发人员的用户都加入到这个组中,如有:dxca,dxcb,dxcc

使用一个项目成员账号在$cvsroot目录下建立 一个该项目的同名目录如dxc,并修该目录的所属组为dxc,使用

chmod g+s dxc

设置 sgid位

然后,import该项目。

这样该组的每个成员就都可以正确的checkout和commit,即使add新的目录和文件也不会导致其他的用户不能正确访问而需要手工改变新子目录的属性。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有