权限:
1.系统中的权限是文件中标识
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AVMpZTyF-1670154878776)(C:\Users\LENOVO\AppData\Roaming\Typora\typora-user-images\image-20221203140814312.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OYkadlPn-1670154878778)(C:\Users\LENOVO\AppData\Roaming\Typora\typora-user-images\image-20221203140843636.png)]
2.权限两种描述方式
字符形式:r w x
数值形式:r=4 w=2 x=1
3.文件默认权限值
目录文件的最高权限值777
权限过滤值(权限掩码)umask 022
默认过滤后755
文本文件的最高权限值是666
644
按照字符过滤
4.文本文件:r read 读取文件内容(cat more less head tail tac grep)
w write 编辑文件内容(vim > cat < file)
x excute 解释运行文件的内容(命令文件)
目录文件:r ls
w
x cd (r-x) (rwx)
5.linux中文件权限匹配方式
可执行文件进程的所属身份是用发起者身份,
判断进程发起者身份是否是目标文件的所属用户,是,匹配目录文件所属用户的权限;
不是,判断进程发起者身份是否是目标文件的所属组用户,是,直接匹配目标文件组权限,
不是,则直接匹配目标其他用户的权限
6.更改文件的权限
chmod 权限 文件名
注:作为普通用户只能更改属于自己的文件的权限。
u所属用户位 g所属组 o其他用户 a 所有
chmod ugo=rwx file1 == chmod a=rwx file1 == chmod rwx file
chmod u=rw,g+r,o-r file1 == chmod -x file
------------------------------------------------------------------------
chmod 644 file2 rw-r--r--
chmod 006 file3
【chmod u=6 file4 ----错误的】
chown 更改文件的所属用户
chown 用户名 FILE
chown 用户名:组名 FILE
chown .组名 FILE
chgrp 更改文件的所属组
chgrp 组名 FILE
eg:
[root@www ~]# ll aaa
-------rw-. 1 root root 5 Dec 4 14:30 aaa
[root@www ~]# chown xixi:haha aaa
[root@www ~]# ll aaa
-------rw-. 1 xixi haha 5 Dec 4 14:30 aaa
[root@www ~]# chown redhat aaa
[root@www ~]# ll aaa
-------rw-. 1 redhat haha 5 Dec 4 14:30 aaa
[root@www ~]# chgrp xixi aaa
[root@www ~]# ll aaa
-------rw-. 1 redhat xixi 5 Dec 4 14:30 aaa
练习题3
拷贝文件/etc/fstab 到/var/tmp/fstab
配置文件/var/tmp/fstab 的权限
• 文件/var/tmp/fstab 的拥有者是 zhangsan
• 文件/var/tmp/fstab 属于 zhangsan 组
• 文件/var/tmp/fstab 对任何用户不可执行
• 其他用户(当前和将来的)能对文件/var/tmp/fstab 进行读操作
#cp /etc/fstab /var/tmp/fstab
#chown zhangsan /var/tmp/fstab
#chgrp zhangsan /var/tmp/fstab
#chmod a-x /var/tmp/fstab
#chmod o+r /var/tmp/fstab
7.特殊权限
u+s=4 所属用户的禁锢位
仅对可执行文件(命令文件)设置有意义:
可执行文件(命令文件)设置u+s权限,可执行文件的进程所属用户是可执行文件自身的用户;
eg:
[root@www ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 33544 Dec 14 2019 /usr/bin/passwd
[root@www ~]# ll /etc/shadow
----------. 1 root root 1568 Dec 4 11:58 /etc/shadow (对所有用户没有任何权限)
[redhat@www ~]$ passwd (为什么普通用户可以修改密码/etc/shadow)
Changing password for user redhat.
Current password:
原因:通过普通用户执行passwd,passwd文件进程身份是root
设置情况:通过任意用户执行命令,通过root身份来执行就可以设置特殊权限u+s
g+s=2所属组的禁锢位
(1)对可执行文件设置有意义:(很少用)
可执行文件(命令文件)设置g+s权限,可执行文件的进程所属组是可执行文件自身的所属组;
(2)对目录文件设置有意义:
任意用户在该目录下创建的文件,文件的所属组都是目录的所属组
eg:
[root@www ~]# mkdir /pub
[root@www ~]# chmod 777 /pub
[root@www ~]# ll /usr/bin/touch
-rwxr-xr-x. 1 root root 96144 Jul 10 2021 /usr/bin/touch
[user@www ~]$ touch /pub/u1
[user@www ~]$ ll /pub/u1
-rw-rw-r--. 1 user user 0 Dec 4 16:20 /pub/u1
----------------------目录g+s------------------------------------
[root@www ~]# chmod g+s /pub
[root@www ~]# ll /pub -d
drwxrwsrwx. 2 root root 16 Dec 4 16:20 /pub
[user@www ~]$ touch /pub/u2
[user@www ~]$ ll /pub/
total 0
-rw-rw-r--. 1 user user 0 Dec 4 16:20 u1
-rw-rw-r--. 1 user root 0 Dec 4 16:22 u2
o+t=1 冒险位
仅对目录文件设置有意义:
目录文件设置o+t权限后,普通用户只能删除自己的文件不能删除别人的文件
[root@www ~]# ll -d /test
drwxrwxrwx. 3 root root 102 Dec 4 15:18 /test
[root@www ~]# ll /test
total 0
-rw-r--r--. 1 root root 0 Dec 4 15:09 r2
-rw-r--r--. 1 root root 0 Dec 4 15:09 r3
-rw-r--r--. 1 redhat redhat 0 Dec 4 15:10 red1
-rw-r--r--. 1 redhat redhat 0 Dec 4 15:10 red2
-rw-r--r--. 1 redhat redhat 0 Dec 4 15:10 red3
-rw-r--r--. 1 user user 0 Dec 4 15:10 u1
-rw-r--r--. 1 user user 0 Dec 4 15:10 u2
-rw-r--r--. 1 user user 0 Dec 4 15:10 u3
[user@www test]$ rm -f r2 删除任意用户的文件
--------------------目录o+t----------------------------------
[root@www ~]# chmod o+t /test
[root@www ~]# ll -d /test
drwxrwxrwt. 3 root root 92 Dec 4 16:28 /test
[user@www test]$ rm -f r3
rm: cannot remove 'r3': Operation not permitted
[user@www test]$ rm -f u1
[user@www test]$ rm -f red1
rm: cannot remove 'red1': Operation not permitted
8.扩展权限
./+ 表示没有扩展权限,+有扩展权限
查看文件的权限列表:getfacl FILENAME
设置扩展权限列表:setfacl -m u:用户名:权限 FILENAME
setfacl -m g:组名:权限 FILENAME
删除扩展权限列表:setfacl -x u:用户名: FILENAME
清空扩展权限: setfacl -b FILENAME
getfacl 查看文件的权限列表
[root@www ~]# getfacl aaa
# file: aaa
# owner: redhat
# group: xixi
# flags: sst
user::rw-
group::r--
other::r--
setfacl 设置权限列表
-m 指定权限列表
setfacl -m u:用户名(UID):权限 file
setfacl -m g:组名(GID):权限 file
[root@www ~]# setfacl -m u:xixi:rwx aaa
[root@www ~]# getfacl aaa
# file: aaa
# owner: redhat
# group: xixi
# flags: sst
user::rw-
user:xixi:rwx
group::r--
mask::rwx
other::r--
-x 删除扩展权限列表
-b 清空扩展权限(扩展权限的表示符)
[root@www ~]# setfacl -x u:xixi: aaa
[root@www ~]# ll aaa
-rwSr-Sr-T+ 1 redhat xixi 5 Dec 4 14:30 aaa
[root@www ~]# getfacl aaa
# file: aaa
# owner: redhat
# group: xixi
# flags: sst
user::rw-
group::r--
mask::r-- (扩展权限标识)
other::r--
[root@www ~]# setfacl -b aaa
[root@www ~]# ll aaa
-rwSr-Sr-T. 1 redhat xixi 5 Dec 4 14:30 aaa
作业题:
1.创建下列用户,组,和组的成员关系(servera)
• 创建组sysmgrs
• 一个名为 natasha 的用户,其属于 sysmgrs,这个组是该用户的从属组
• 一个名为 harry 的用户,属于 sysmgrs,这个组是该用户的从属组
• 一个名为 sarah 的用户,其在系统汇总没有可以交互的 shell
• 用户 natsha,harry,sarah 的秘密吗都要设定为:modteed
2.拷贝文件/etc/fstab 到/var/tmp/fstab 配置文件/var/tmp/fstab 的权限
• 文件/var/tmp/fstab 的拥有者是 root 文件/var/tmp/fstab 属于 root 组
• 文件/var/tmp/fstab 对任何用户不可执行
• 用户 natasha 能够对文件/var/tmp/fstab具有读写权限
#useradd natasha
#setfacl -m u:natasha:rw /var/tmp/fstab
• 用户 harry 对文件/var/tmp/fstab 既不能读也不能写
#useradd harry
#setfacl -m u:harry:--- /var/tmp/fstab
• 其他用户(当前和将来的)能对文件/var/tmp/fstab 进行读操作
3.创建一个共享目录/home/managers 特性如下
• /home/managers 目录的所有权是 sysmgrs
• sysmgrs 组成员对目录有读写和执行的权限。除此之外的其他用户没有任何权限(root 用户除外)
/var/tmp/fstab
• 用户 harry 对文件/var/tmp/fstab 既不能读也不能写
#useradd harry
#setfacl -m u:harry:— /var/tmp/fstab
• 其他用户(当前和将来的)能对文件/var/tmp/fstab 进行读操作
3.创建一个共享目录/home/managers 特性如下
• /home/managers 目录的所有权是 sysmgrs
• sysmgrs 组成员对目录有读写和执行的权限。除此之外的其他用户没有任何权限(root 用户除外)
• 在/home/managers 目录中创建的文件,其组所有权会自动设置为属于 sysmgrs组