?一.linux权限的概念:
1.用户:
在用户匹配过程中,系统会依次进行匹配,首先是文件或目录的拥有者,然后是所属组,最后是其他用户。
也就是说,用户要么是拥有者,要么是所属组成员,要么是其他用户。
例如,如果拥有者没有某个权限,而所属组有该权限,拥有者仍然无法获得该权限。
由于文件或目录的1.拥有者、2.所属组和3.其他用户这三类用户的设置不同,不同的用户可能拥有不同的权限。
注意:上述用户权限规则适用于普通用户,超级用户root可以无视所有权限限制。
下图展示了文件或目录的拥有者和所属组:
2.文件/目录属性:
我们可以通过更改文件或目录的拥有者、所属组和其他用户的权限来调整其权限。
文件或目录有三种基本权限:读取权限(r)、写入权限(w)和执行权限(x)。每个权限类别(拥有者、所属组、其他用户)各有三个权限,共九个权限位,用“-”表示没有该权限。
例如:
不考虑最前面的字母。
1.test.cpp文件的权限是:前三个字母(rw-)表示拥有者有读取和写入权限,但没有执行权限。
2.中间三个字母(r–)表示所属组只有读取权限,没有写入和执行权限。
3.后三个字母(r–)表示其他用户也只有读取权限。
?二.更改权限:1.更改rwx权限:chmod:
功能:设置文件的访问权限。
格式:chmod [参数] 权限 文件名。
常用选项:
●-R 递归修改目录及其文件的权限。
注意:只有文件的拥有者和超级用户root可以更改权限。
参数包括:+-=
u:代表拥有者。
g:代表所属组。
o:代表其他用户。
a:代表所有用户。
例如:
为拥有者添加执行权限。
也可以使用三个八进制数来表示权限:
r:100(十进制:4),w:010(2),x:001(1)。
rw:110(6),rx:101(5),wx:011(3)。
rwx(7)。
操作说明:
chmod 三个八进制数 文件名称
二.改变文件的拥有者,所属组:1.更改拥有者:
chown 新的拥有者 文件名称
2.更改所属组: chgrp 新的所属组 文件名称
-R 递归修改文件所属组
?三.对于umask的理解:新建文件的默认权限是0666(rw-rw-rw-)。
新建目录的默认权限是0777(rwxrwxrwx)。
然而,新建文件或目录的实际权限与此不同,这是因为最终权限是由初始权限与umask值的逻辑与(&)运算决定的。
超级用户的umask默认值是0022,普通用户的umask默认值是0002。
因此,超级用户新建的目录权限为0777 & (~0022) = 0755。
新建文件的权限为0666 & (~0022) = 0644。
?四.粘滞位的理解:chmod -t
首先需要理解,删除目录或文件的权限取决于你是否拥有其上一级目录的写入权限,而不是文件本身的写入权限。
由于某些原因,我们可能需要创建一个共享目录,所有用户都具有rwx权限(如下图)。然而,在这种设置下,虽然其他用户没有写入权限,但他们可以删除你在share目录下新建的文件。因为删除share目录下的文件取决于你在share目录是否有写入权限,而在共享目录中,所有人都可以删除别人的文件。
在这种情况下,我们引入了粘滞位。
为目录添加粘滞位后,即使你对该目录有写入权限,只要文件不是你创建的,你就无法删除该文件。