linux第七周

发布时间 2023-10-18 23:15:53作者: Yukino0

之前我们学习了对文件ugo基本权限的命令内容的学习,ugo权限只针对一个用户、一个组与其他用户,这周我们来学习acl基本权限,它可以对单一用户、单一文件或目录精确设置相应权限。

首先我们创建一个文件,然后使用getfacl命令可以查看acl权限

cd /home/swxy
[root@localhost swxy]# touch test.txt
[root@localhost swxy]# getfacl test.txt
# file: test.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--

[root@localhost swxy]# ll test.txt
-rw-r--r--. 1 root root 20 10月 18 15:54 test.txt

可以看到使用getfacl命令查看acl权限比使用ll命令查看ugo权限要更加详细

接着我们可以使用setfacl命令去设置acl权限

setfacl -m u:zhouzhiyi20197818:rw test.txt

然后用getfacl命令查看acl权限

[root@localhost swxy]# getfacl test.txt
# file: test.txt
# owner: root
# group: root
user::rw-
user:zhouzhiyi20197818:rw-
group::r--
mask::rw-
other::r--

[root@localhost swxy]# ll test.txt
-rw-rw-r--+ 1 root root 20 10月 18 15:54 test.txt

使用ll命令查看发现权限字符位最后出现了“+”,说明该文件含有acl权限。

而给用户、文件或者目录修改权限是可以使用“-m”参数。

当给用户增加“-”权限时,因为原本只有读取权限,此时相当于变成没有权限,但使用ll命令查看时还是能显示,它错误的认为用户此时还有读取权限,但是由getfacl查看发现用户此时并不属于其他用户(因为之前的文件是在root用户下创建的),从而权限变成没有权限。这也说明了ll命令不能精确查找文件权限。

使用“-x”参数可以删除用户对文件的所有权限,添加“-b“参数可以删除所有扩展acl权限,回到ugo的基本权限。

之后我们继续学习了mask权限和default权限。

mask权限在acl权限里的最大有效权限,设置mask权限时它会与用户权限进行与运算。

例如将mask的权限设置为rw,用户的权限设置为rx那么最后相与的权限为r

[root@localhost swxy]# setfacl -m mask::rw test.txt
[root@localhost swxy]# setfacl -m u:zhouzhiyi20197818:rx test.txt
[root@localhost swxy]# getfacl test.txt
# file: test.txt
# owner: root
# group: root
user::rw-
user:zhouzhiyi20197818:r-x
group::r--
mask::r-x
other::r--

此时我们还可以发现mask不能影响owner和other的权限。mask的作用是临时降低用户或组的权限,但只要有任何的acl权限设置,mask会自动还原。

default命令是继承命令,创建一个新目录,使用setfacl命令给用户增加rwx权限,然后在这个目录中再创建一个新目录,切换到普通用户发现无法创建,此时用default命令可以继承上一个目录的权限

setfacl -m d:u:zhouzhiyi20197818:rwx /dir01

再切换普通用户就可以创建新目录。

接下来我们来学习高级权限

首先我们在/root目录下创建一个文件file01.txt,切换到普通用户后我们访问/usr/bin/cat进程,此时因为我们的属组是普通用户我们是没有访问/root目录的权限的,从而我们就不能在普通用户下查看file01.txt

而普通用户可以修改密码,实际上是root用户赋予普通用户修改密码的权限。在修改密码时,普通用户执行的时/usr/bin/passwd文件,最终修改的时/etc/shadow文件,而/etc/shadow文件只有root用户可以修改,使用ps | aux命令可以查看到执行passwd进程的用户时root用户。