Linux 文件权限与目录配置

Linux 文件权限与目录配置

文件权限RWX 的注意点

1
2
# x权限比较有意思,对文件而言是执行,对目录而言是进入到该目录的权限;
# w指的是写的权限,对文件而言仅仅针对文件内容对修改(增删改),而文件本身的删除却是由文件所在目录的w权限控制的;

文件权限中的SUID,SGID,SBIT

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
SUID: 表示所有者权限的x权限位替换为s,此种权限称为SetUID,简称SUID权限。如 /usr/bin/passwd -rwsr-xr-x 1 root root ...

SUID 特殊权限仅适用于可执行文件,所具有的功能是,只要用户对设有 SUID 的文件有执行权限,那么当用户执行此文件时,会以文件所有者的身份去执行此文件,一旦文件执行结束,身份的切换也随之消失。

举一个例子,我们都知道,Linux 系统中所有用户的密码数据都记录在 /etc/shadow 这个文件中,通过 ll /etc/shadow 命令可以看到,此文件的权限是 0(---------),也就是说,普通用户对此文件没有任何操作权限。

根据passwd的权限配置(-rwsr-xr-x)others 也具有x权限,意味着任何用户都能以root身份去执行passwd命令。

SGID:与SUID对比理解
SGID 只针对可执行文件有效,换句话说,只有可执行文件才可以被赋予 SGID 权限,普通文件赋予 SGID 没有意义。
用户需要对此可执行文件有 x 权限;
用户在执行具有 SGID 权限的可执行文件时,用户的群组身份会变为文件所属群组;
SGID 权限赋予用户改变组身份的效果,只在可执行文件运行过程中有效;

SGID对目录的作用:
当一个目录被赋予 SGID 权限后,进入此目录的普通用户,其有效群组会变为该目录的所属组,会就使得用户在创建文件(或目录)时,该文件(或目录)的所属组将不再是用户的所属组,而使用的是目录的所属组。

也就是说,只有当普通用户对具有 SGID 权限的目录有 rwx 权限时,SGID 的功能才能完全发挥。比如说,如果用户对该目录仅有 rx 权限,则用户进入此目录后,虽然其有效群组变为此目录的所属组,但由于没有 x 权限,用户无法在目录中创建文件或目录,SGID 权限也就无法发挥它的作用。

SBIT: Sticky BIT,简称 SBIT 特殊权限,可意为粘着位、粘滞位、防删除位等(在others 权限位的x替换为t)。
SBIT 权限仅对目录有效,一旦目录设定了 SBIT 权限,则用户在此目录下创建的文件或目录,就只有自己和 root 才有权利修改或删除该文件。