Linux学习笔记|一道题搞清楚目录与文件权限设置
2017-03-14 23:08
197 查看
注:本文参考《鸟哥的Linux私房菜》基础学习篇
情景模拟题:假设系统中有四个账号,分别是alex,alex1,arod,arod1,其中alex和alex1同属于alex用户组,arod和arod1属于arod用户组,alex和arod两个用户还共同支持名为project用户组。project用户组的用户拥有/project/process1/目录的开发权,该目录不允许project组外其他人进入查阅。则该目录的设置权限应该是什么?
首先建立四个用户,且满足alex和alex1同属于alex用户组,arod和arod1属于arod用户组,alex和arod两个用户属于project用户组。
查看各账号属性如下:
在root下新建所需要的开发项目的目录/project/process1
各层目录默认权限及所属用户组为:
该目录属于roo用户组,其他用户权限为r-x,四个用户都可以进入该目录并浏览目录内文件列表,但不能添加和修改目录内文件。
应将所属用户组改为project,并设置权限为project组外人员不能进入查阅,即用户组内权限为rwx,其他人为—
此时,/project/process目录project组外人员无任何权限。但是,存在一个问题,若alex用户在/project/process目录下新建文件newfile时,文件默认属于projectalex用户组,此时arod用户并无权限。因此上述设置只能满足alex1、arod1等组外人员不能进入目录。
同时,虽然alex1与alex同属于projectalex用户组,有权限查看alex新建的文件,但是由于没有权限进入process目录,因此不能对该文件进行任何操作。验证程序如下:
如上图所示,newfile属于projectalex用户组,用户组权限是r–,但是alex1用户并没有权限进入该目录,也没有权限删除newfile文件,若/project/process目录的用户组权限是–x,newfile的用户组权限为—,则alex可以进入该目录并浏览目录下文件列表详情,不能打开newfile文件进行浏览,但是可以删除newfile文件。
将newfile用户组权限改为rwx,由于默认newfile属于projectalex用户组,因此arod用户并无权限打开newfile文件。但是arod可以删除newfile文件:
由上面的结果,可知,对于alex新建的newfile文件,虽然alex1属于newfile的用户组,但是由于alex1没有目录权限,因此无法对newfile进行操作。arod不属于newfile用户组,因此无权限打开newfile文件,但是由于arod属于目录/project/process的用户组,因此具有对目录的rwx权限,因此可以浏览目录下的文件详情列表,也可以删除newfile文件。
此时,仍然不能满足题设要求。有两种方法,第一种是将newfile的用户组进行修改,改为project即可。
此方法存在的问题是每次新建都需要更改所属用户组。
第二种方法是在root下对目录/project/process加入SGID权限。由于目录/project/process属于project用户组,设置SGID权限后,目录/project/process下新建文件的所属组将变为目录的所属组,即所有新建文件所属组都为projet。其他用户必须有r-x权限才能获得SGID权限,因此只有project组内成员才能在目录下新建文件并修改文件,且可以互相修改对方新建的文件。
设置SGID权限后,目录/project/process下新建文件所属组为project,普通用户umask为002,则newfile2权限为-rw-rw-r–,满足题设所有要求。
情景模拟题:假设系统中有四个账号,分别是alex,alex1,arod,arod1,其中alex和alex1同属于alex用户组,arod和arod1属于arod用户组,alex和arod两个用户还共同支持名为project用户组。project用户组的用户拥有/project/process1/目录的开发权,该目录不允许project组外其他人进入查阅。则该目录的设置权限应该是什么?
首先建立四个用户,且满足alex和alex1同属于alex用户组,arod和arod1属于arod用户组,alex和arod两个用户属于project用户组。
[root@localhost ~]# groupadd project [root@localhost ~]# groupadd projectalex [root@localhost ~]# groupadd projectarod [root@localhost ~]# useradd -g projectalex -G project alex [root@localhost ~]# useradd -g projectarod -G project arod [root@localhost ~]# useradd -G projectalex alex [root@localhost ~]# useradd -G projectarod arod
查看各账号属性如下:
在root下新建所需要的开发项目的目录/project/process1
[root@localhost ~]# mkdir -p /project/process
各层目录默认权限及所属用户组为:
该目录属于roo用户组,其他用户权限为r-x,四个用户都可以进入该目录并浏览目录内文件列表,但不能添加和修改目录内文件。
应将所属用户组改为project,并设置权限为project组外人员不能进入查阅,即用户组内权限为rwx,其他人为—
此时,/project/process目录project组外人员无任何权限。但是,存在一个问题,若alex用户在/project/process目录下新建文件newfile时,文件默认属于projectalex用户组,此时arod用户并无权限。因此上述设置只能满足alex1、arod1等组外人员不能进入目录。
同时,虽然alex1与alex同属于projectalex用户组,有权限查看alex新建的文件,但是由于没有权限进入process目录,因此不能对该文件进行任何操作。验证程序如下:
如上图所示,newfile属于projectalex用户组,用户组权限是r–,但是alex1用户并没有权限进入该目录,也没有权限删除newfile文件,若/project/process目录的用户组权限是–x,newfile的用户组权限为—,则alex可以进入该目录并浏览目录下文件列表详情,不能打开newfile文件进行浏览,但是可以删除newfile文件。
将newfile用户组权限改为rwx,由于默认newfile属于projectalex用户组,因此arod用户并无权限打开newfile文件。但是arod可以删除newfile文件:
由上面的结果,可知,对于alex新建的newfile文件,虽然alex1属于newfile的用户组,但是由于alex1没有目录权限,因此无法对newfile进行操作。arod不属于newfile用户组,因此无权限打开newfile文件,但是由于arod属于目录/project/process的用户组,因此具有对目录的rwx权限,因此可以浏览目录下的文件详情列表,也可以删除newfile文件。
此时,仍然不能满足题设要求。有两种方法,第一种是将newfile的用户组进行修改,改为project即可。
此方法存在的问题是每次新建都需要更改所属用户组。
第二种方法是在root下对目录/project/process加入SGID权限。由于目录/project/process属于project用户组,设置SGID权限后,目录/project/process下新建文件的所属组将变为目录的所属组,即所有新建文件所属组都为projet。其他用户必须有r-x权限才能获得SGID权限,因此只有project组内成员才能在目录下新建文件并修改文件,且可以互相修改对方新建的文件。
设置SGID权限后,目录/project/process下新建文件所属组为project,普通用户umask为002,则newfile2权限为-rw-rw-r–,满足题设所有要求。
相关文章推荐
- asp.net 删除文件夹,指定文件夹,删除文件夹和所有文件,删除权限设置,递归删除文件夹目录及文件
- Linux文件和目录访问权限设置
- Linux文件和目录访问权限设置
- Linux文件和目录访问权限设置
- Linux文件和目录访问权限设置
- linux文件和目录的权限设置
- LINUX中 设置了umask 创建的默认文件和目录的权限
- 文件/目录权限设置命令:chmod
- Linux文件和目录访问权限设置
- Fedora-Linux文件和目录访问权限设置
- Linux文件和目录访问权限设置
- 文件/目录权限设置命令:chmod
- Linux文件和目录访问权限设置
- Linux文件和目录访问权限设置
- Linux文件和目录访问权限设置
- Linux中用CVSNT进行目录、文件的权限设置
- 如何设置UNIX/LINUX中的文件及目录权限【转自www.bitsCN.com】
- Linux 文件/目录权限设置命令 chmod
- Linux下Web目录和文件安全权限设置
- IIS7上传文件到特定目录下权限的设置