2、3、4 chgrp 修改文件的所属组
修该文件的拥有者所用指令:chgrp 用户名 文件名 。我们可结合下图理解:
我们发现,root用户可以修改本不属于它的文件的所属组。但所有用户都可这样吗?具体细节我们看下图:
当然,我们也可同时修改文件的拥有者和所属组,前提是你有相应的权限。具体如下:
2、4 目录权限设置
2、4、1 目录权限的基本设置
上面我们学习了对普通文件的权限设置后,我们再看对目录权限的设置。对目录的权限都有哪些:
可执行权限(x): 如果目录没有可执行权限, 则无法cd到目录中;
可读权限(r): 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容;
可写权限(w): 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件。
我们可结合下图实例学习:
上图是我们对目录缩小了可读 ‘ r ’ 的权限,再想访问该目录下的具体文件的信息是权限就被限制了。但是我们仍然可进入到该目录下,因为我们此时有 ‘x’ 可执行权限。为什么进入该文件需要可执行指令,因为文件在Linux下相当于一个可执行程序,执行它就等同于进入该文件。
我们更改其他用户也无 ‘r’ 读权限。那要是在root用户下呢?
事实证明,root用户仍可以读。再次体现root用户权限基本无限制。
通过实例,我们再看一些具体目录权限的细节:
那么问题来了如果我们想让Other可以在特定目录下创建文件,并且写入(对Other打开 ‘w’ 权限)。但是并不象让Other删除掉自己的任何文件(对Other限制 ‘w’ 权限),这似乎好像矛盾了,但在实际需求中又不可缺。因此就引出了粘滞位。我们接着往下看。
2、4、2 粘滞位详解
粘滞位是什么呢?粘滞位也是一个权限。最常见的用法在目录上设置粘滞位,也只能针对⽬录设置,对于⽂件⽆效。则设置了粘滞位后,Other可以在该目录下创建文件并写入,但只有目录内文件的所有者或者root才可以删除或移动该文件。如果不为目录设置粘滞位,任何具有该目录写和执行权限的用户都可以删除和移动其中的文件。
通过对粘滞位了了解后,我们发现确实能够解决上面的矛盾和满足我们的需求了。那我们接下来就要看怎么设置粘滞位了。对目录设置粘滞位的命令是:chmod +t 目录名
此时其他用户可以访问test_4_14目录,但并不能删除test_4_14目录下的文件,且只有test_4_14目录内文件的所有者或者root才可以删除或移动该文件。
粘滞位还有一中应用场景。就是一个系统下可能会有很多用户,那就意味着就会有很多的临时数据。那临时数据都保存在哪里了呢?临时数据文件保存在了系统的 /tmp 目录下。
因为所有用户都要把临时数据放到系统的 /tmp 目录下(该目录本身属于root用户的),那么系统的 /tmp 目录的权限对Other要放开。但我们又不能让一个用户随意操作删除此目录下的其他文件,所以就设置了粘滞位。进而用户只能创建和操作属于自己的临时数据文件。
当一个目录被设置为 " 粘滞位 "( 用 chmod +t), 则该目录下的文件只能由
超级管理员删除;
该目录的所有者删除;
该文件的所有者删除。
三、总结
这里给大家列出关于权限的总结:
目录的可执行权限是表示你可否在目录下执行命令。
如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限,所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。
如果修改权限受限,仍想要执行该命令,可切换到root用户或者加上sudo;
root用户基本无权限限制;
普通用户收到权限限制。