上一节内容我们对文件的读、写、执行权限有了一定的了解,并且掌握了如何通过命令赋予用户、组相应的权限,那么这一节标题大家看到可能会产生疑惑,文件的特殊权限又是什么呢?是否也可以通过命令赋予文件的特殊权限呢?
因为在如今日益复杂的生产环境中,单纯的rwx权限已经无法满足我们的工作需求了,还需要一些特殊权限去使得我们的工作变得更加便捷且灵活,因此便有了特殊权限。
知识前导:文件的特殊权限
1.SUID:SUID是一种对二进制程序进行设置的特殊权限,能够让二进制程序的执行者临时拥有所有者的权限。
2.SGID:SGID可以让程序执行者获得文件所属组的权限。
3.SBIT:当对目录设置了SBIT粘滞位后,该文件只能被文件的所有者执行删除操作了。
相信各位读者看到关于特殊权限的解释之后,还是一脸懵,这些都是什么,我刚开始学习的时候也是跟大家一样的“囧”样,后来通过不断的实验慢慢理解了文件的特殊权限。
1)SUID
例如所有的用户都可以执行passwd命令,将密码保存在/etc/shadow文件中。但是我们查看/etc/passwd文件的权限时,可以发现权限集为---。那么用户为什么可以自己修改密码并将密码存入影子文件呢?下面我们可以结合以下图片进行分析,因为/bin/passwd文件被赋予了SUID的权限,使得用户临时拥有该文件的所有权限,因此就可以将修改的密码写入shadow中。
2)SGID:
例如现在需要在一个部门内共享一个文件目录,让部门内所有人员都可以看到这个读取此目录的内容,同时此部门内所有人员在此目录创建的文件都属于该目录的所属组,而不属于自己的私有组,那么这个时候用到的就是SGID的功能。
如下图所示,我们给设置了777权限,确保普通用户可以向其中写入文件,并为该目录设置了SGID特殊权限位。
如下图所示,切换到普通用户zhsan,并在新建的文件写入“i love linux”,然后查看改文件的所属组,可以看到是属于root组而不是自己的私有组(zhsan)。
3)SBIT
可以看到,/tmp的SBIT特殊权限已经默认存在,其他用户字段的权限为“rwt”。然后在创建了test文件的基础上,切换成普通用户,并删除,可以看到是无法删除的,这是因为粘滞位的保护作用。
下面让我们通过一道例题来加深理解:
要求:创建以下共享目录
- /home./tools的组的所有权是admins
- 此目录能被admins组的成员读取,写入和访问,除root外其他用户没有这些权限
- 在此目录下创建的文件,其组的所有权自动设置为admins组
第一步:首先我们创建目录/home/tools,并且创建用户组admins
第二步:设置/home/tools的权限
第三步:使在此目录下创建的文件夹其所属组都是admins
我们可以看到还没有设置前,在这个目录下创建的文件是属于私有组的。
然后我们在此目录下设置SGID特殊权限
在这里给大家说句抱歉,因为我第一步忘记将目录/home/tools的所属组改为admins了,然后再第三步补上了,大家一定要注意看哈,本期的内容到这里就结束啦!!谢谢