---------系统中有两个账号,分别是alex与arod,这两个账号除了支持自己的组,还共同支持一个名为project的组。如这两个账号需要共同拥有/srv/ahome/目录的开发权,且该目录不允许其他账号进入查阅,请问该目录的权限应如何设定?请先以传统权限说明,再以SGID的功能解析。 目标:了解为何项目开发时,目录最好设定SGID的权限。
前提:多个账号支持同一组,且共同拥有目录的使用权。
需求:需要使用root的身份运行chmod、chgrp等命令,帮用户设定好他们的开发环境。这也是管理员的重要任务之一。
--------------
项目分析:
00:创建共同组(project)
01:创建2个账户及相关数据;建立共同开发目录/srv/ahome
02:该目录不允许其他账号进入查阅
=========================================================================
利用chmod命令修改文件的特殊权限(SUID):
只有二进制程序文件才可以设定SUID,其他类型的文件设置没有意义。 在赋予SUID权限后,该文件的执行者仅在程序运行时将拥有该文件拥有者的权限。 执行者必须要拥有该文件的执行权限(x)替换成S。
修改文件与目录的默认权限与隐藏权限
umask指定用户在建立文件或目录时的默认权限值。(我们只关注0 022后三位)
假设我们想要自己创建的文件具有6(r+w), 同组成员具有修改编辑的权限(w)不只是只读权限, 采用下面命令修改文件权限共同编辑项目文件。那么默认的umask初始值022应变成002;
chattr命令(了解就行!)
a:系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件
i:不得任意改动文件或目录。
lsattr -参数 文件或目录
-a:将隐藏文件的属性也显示出来。 -d:如果是目录,仅列出目录本身的属性而非目录内的文件名。 -R:连同子目录的数据也一并列出来
----------------------------------------------------------------------------------------------------------------------------00+01+02:创建共同组(project):
测试一下,在alex建立文件,让arod去处理这个文件。(这个文件属于组alex, arod对它是其他人身份只有可读权限r)
加入SGID的权限!当目录拥有SGID权限时,用户在该目录下创建的文件的属组都会继承该目录的属组。 字符形式表示:增加权限g+s,移除权限g-s; 数字形式表示:0表示去除SGID权限,2表示添加SGID权限,在数字表达形式开头加0或2, 如:0770移除SGID权限, 2770添加SGID权限;
再测试一下!
alex、arod建立的新文件所属组都是project,加上umask都是002,这样两个账号可以互相修改对方文件;