文件权限与归属
文件权限
尽管在 Linux 系统中一切都是文件,但是每个文件的类型不尽相同,因此 Linux 系统使用了不同的字符来加以区分,常见的字符如下所示
字符 | 说明 |
---|---|
- | 普通文件 |
d | 目录文件 |
l | 链接文件 |
b | 设备文件 |
c | 字符设备文件 |
p | 管道文件 |
在 Linux 系统中,每个文件都有所属的所有者和所有组,并且规定了文件的所有者、所有组以及其他人对文件所拥有的可读(r)、可写(w)、可执行(x)等权限。
对于一般文件来说,权限比较容易理解:“可读”表示能够读取文件的实际内容;“可写”表示能够编辑、新增、修改、删除文件的实际内容;“可执行”则表示能够运行一个脚本程序。
对目录文件来说,“可读”表示能够读取目录内的文件列表;“可写”表示能够在目录内新增、删除、重命名文件;而“可执行”则表示能够进入该目录。
文件的读、写、执行权限可以简写为 rwx,亦可分别用数字 4、2、1 来表示,文件所有者,所属组及其他用户权限之间无关联。
文件权限的字符与数字表示
权限分配 | 所有者 | 所有者 | 所有者 | 所属组 | 所属组 | 所属组 | 其他用户 | 其他用户 | 其他用户 |
---|---|---|---|---|---|---|---|---|---|
权限项 | 读 | 写 | 执行 | 读 | 写 | 执行 | 读 | 写 | 执行 |
字符表示 | r | w | x | r | w | x | r | w | x |
数字表示 | 4 | 2 | 1 | 4 | 2 | 1 | 4 | 2 | 1 |
注意:文件权限的数字法表示基于字符表示(rwx)的权限计算而来,其目的是简化权限的表示。
例如,若某个文件的权限为 7 则代表可读、可写、可执行(4+2+1);若权限为 6 则代表可读、可写(4+2)。现在有这样一个文件,其所有者拥有可读、可写、可执行的权限,其文件所属组拥有可读、可写的权限;而且其他人只有可读的权限。那么,这个文件的权限就是 rwxrw-r--,数字法表示即为 764。
包含了文件的类型、访问权限、所有者(属主)、所属组(属组)、占用的磁盘大小、修改时间和文件名称等信息。
文件的特殊权限
单纯设置文件的 rwx 权限无法满足我们对安全和灵活性的需求,因此便有了 SUID、SGID 与 SBIT 的特殊权限位。这是一种对文件权限进行设置的特殊功能,可以与一般权限同时使用,以弥补一般权限不能实现的功能。
SUID
SUID 是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效)。
例如,所有用户都可以执行 passwd 命令来修改自己的用户密码,而用户密码保存在etc/shadow 文件中。仔细查看这个文件就会发现它的默认权限是 000,也就是说除了 root 管理员以外,所有用户都没有查看或编辑该文件的权限。但是,在使用 passwd 命令时如果加上 SUID 特殊权限位,就可让普通用户临时获得程序所有者的身份,把变更的密码信息写入到 shadow 文件中。
‘
特殊权限后将变成大写的 S
SGID
用于让执行者临时拥有属组的权限(对拥有执行权限的二进制程序进行设置)和 在某个目录中创建的文件自动继承该目录的用户组(只可以对目录进行设置)。
SGID 的第一种功能是参考 SUID 而设计的,不同点在于执行程序的用户获取的不再是文件所有者的临时权限,而是获取到文件所属组的权限。
chmod
能够用来设置文件或目录的权限
格式:chmod [参数] 权限 文件或者目录名称
如果要把一个文件的权限设置成其所有者可读可写可执行、所属组可读可写、其他人没有任何权限,则相应的字符法表示为 rwxrw----,其对应的数字法表示为 760。
chown
设置文件或目录的所有者和所属组
格式:chown [参数] 所有者:所属组 文件或目录名称
SBIT
SBIT(Sticky Bit)特殊权限位(也可以称之为特殊权限位之粘滞位),SBIT 特殊权限位可确保用户只能删除自己的文件,而不能删除其他用户的文件。
换句话说,当对某个目录设置了 SBIT 粘滞位权限后,那么该目录中的文件就只能被其所有者执行删除操作了。
RHEL 7 系统中的/tmp 作为一个共享文件的目录,默认已经设置了 SBIT 特殊权限位,因此除非是该目录的所有者,否则无法删除这里面的文件。
当目录被设置 SBIT 特殊权限位后,文件的其他人权限部分的 x 执行权限就会被替换成 t 或者 T,原本有 x 执行权限则会写成 t,原本没有 x 执行权限则会被写成 T。
注意:文件能否被删除并不取决于自身的权限,而是看其所在目录是否有写入权限
如果想对其他目录来设置 SBIT 特殊权限位, chmod 命令就可以,对应的参数 o+t 代表设置 SBIT 粘滞位权限
特殊权限-sticky
只作用于目录,目录下创建的文件只有root、文件创建者、目录所有者才能删除。
对系统中的某些目录可以授予这样的权限,此时该目录就遵循该权限规则,如系统中的/tmp目录:
特殊权限ACL
可作用于文件及目录,针对文件和目录授予单个用户的rwx权限。
使用方法:用户test既不是属主也不是属组,但是需要允许用户test能够对该对象有rwx的权限,其他用户无权限。
示例:
- setfacl -R -m d:u:test:rwx test //文件夹
- setfacl -m u:wangwu:rwx test //文件
参数解读
参数 | 作用 |
---|---|
-R | 递归授权 |
-m | 修改acl权限 |
d | 只对后续新对象继承该权限 |
u | 表用户 |
test | 表示授权用户的名称 |
本文系作者 @小白学安全 原创发布在 xbxaq.com 站点,未经许可,禁止转载!
评论