3.权限
3.1系统中的权限是在文件中标识
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oG987E1w-1670241787035)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20221203135905012.png)]
3.2 权限两种描述方式
字符形式: r w x
数值形式:r=4 w=2 x=1
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FocD4VwX-1670241787035)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20221203140008763.png)]
3.3 文件默认权限值
目录文件的最高权限值 777
权限过滤值(权限掩码)umask 022
755
文本文件的最高权限值666
权限过滤值(权限掩码)umask 022
644
3.4 权限字符含义
文件文件:r read 读取文件内容(cat tac more less head tail grep )
w wirte 编辑文件内容(vim > cat << EOF > file)
x excute 解释运行文件的内容(命令文件)
目录文件: r ls
w
x cd (r-x) (rwx)
3.5linux中文件权限匹配方式
可执行文件进程的所属身份是用发起者身份,
判断进程发起者身份是否是目标文件的所属用户,是,匹配目标文件所属用户的权限;
不是,判断进程发起者身份是否是目标文件的所属组用户,是,直接匹配目标文件组权限,
不是,则直接匹配目标文件其他用户的权限;
3.6 更改文件的权限
chmod 权限 文件名
chmod ugo=rwx FILE1 //u user g group o other a all
chmod a=rwx FILE1
chmod -x FILE1
chmod u=rwx,g+w,o-r file
chmod 777 DIRNAME
chmod 7 DIRNAME == chmod 007 DIRNAME
chmod u=7 FILENAME --错误
注:普通用户修改权限,用户只能更改属于当前用户文件的权限。
chown 更改文件所属用户
chown 用户名 FILE...
chown 用户名:组名 FILE...
chgrp 更改文件所属组
chgrp 组名 FILE...
拷贝文件/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
#useradd zhangsan
#chown zhangsan:zhangsan /var/tmp/fstab
#chmod a-x /var/tmp/fstab
#chmod o+r /var/tmp/fstab
3.7特殊权限
umask 0022
chmod 4644 file
u+s =4 所属用户的禁锢位 suid
仅对可执行文件(命令文件)设置有意义:可执行文件进程的所属身份是执行文件自身的身份
[root@www pub]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 33544 Dec 14 2019 /usr/bin/passwd
[redhat@www pub]$ passwd //passwd进程的用户身份是root(是执行文件自身的身份)
//passwd 修改当前用户的密码,更改的是/etc/shadow
[root@www pub]# ll /etc/shadow
----------. 1 root root 1744 Dec 3 11:30 /etc/shadow
为什么普通用户可以修改/etc/shadow的密码信息?
原因是passwd进程的身份是root,作为root匹配目标文件可以忽略读写权限
g+s=2 所属组的禁锢位sgid
对可执行文件(命令文件)设置有意义: 可执行文件进程的所属组身份是执行文件自身的所属组身份 (应用不是很多)
[root@www pub]# ll /usr/bin/touch
-rwxr-xr-x. 1 root root 96144 Jul 10 2021 /usr/bin/touch
[root@www pub]# chmod g+s /usr/bin/touch
[redhat@www pub]$ touch red2
[redhat@www pub]$ ll
-rw-rw-r--. 1 redhat root 0 Dec 3 16:13 red2
对目录文件设置有意义:在目录下任意用户创建的文件,文件的所属组都是当前目录的所属组
[root@www ~]# mkdir /test
[root@www ~]# chmod 777 /test
[redhat@www ~]$ cd /test
[redhat@www test]$ touch red1
[redhat@www test]$ ll
total 0
-rw-rw-r--. 1 redhat redhat 0 Dec 3 16:19 red1
[root@www ~]# chmod g+s /test ----对/test 设置sgid
[root@www ~]# ll -d /test
drwxrwsrwx. 2 root root 18 Dec 3 16:19 /test
[redhat@www test]$ touch red2
[redhat@www test]$ ll
total 0
-rw-rw-r--. 1 redhat redhat 0 Dec 3 16:19 red1
-rw-rw-r--. 1 redhat root 0 Dec 3 16:20 red2 ---创建文件的所属组取决于/test目录的所属组
o+t=1 sticky 冒险位
仅对目录文件设置有意义:
o+t在该目录下,用户只能删除属于自己的文件不能删除别人的文件。
注:(目录文件对当前用户如果没有写权限,不能删除文件;对目录文件只有有写权限,用户可以删除任意用户创建的文件)
3.8扩展权限
./+ .表示没有扩展权限,+有扩展权限
查看文件的权限列表 :getfacl FILENAME
设置扩展权限列表:setfacl -m u:用户名:权限 FILENAME
setfacl -m g:组名:权限 FILENAME
删除扩展权限列表: setfacl -x u:用户名: FILENAME
清空扩展权限: setfacl -b FILENAME
练习题:
1.创建下列用户,组,和组的成员关系(servera)
• 创建组sysmgrs
• 一个名为 natasha 的用户,其属于 sysmgrs,这个组是该用户的从属组
• 一个名为 harry 的用户,属于 sysmgrs,这个组是该用户的从属组
• 一个名为 sarah 的用户,其在系统汇总没有可以交互的 shell
• 用户 natsha,harry,sarah 的秘密吗都要设定为:modteed
#groupadd sysmgrs
#useradd -G sysmgrs natasha
#useradd harry
#usermod -G sysmgrs harry #gpasswd -a harry sysmgrs
#useradd -s /sbin/nologin sarah
#echo modteed |passwd --stdin natasha
#echo modteed |passwd --stdin harry
#echo modteed |passwd --stdin sarah
2.拷贝文件/etc/fstab 到/var/tmp/fstab 配置文件/var/tmp/fstab 的权限
• 文件/var/tmp/fstab 的拥有者是 root 文件/var/tmp/fstab 属于 root 组
• 文件/var/tmp/fstab 对任何用户不可执行
• 用户 natasha 能够对文件/var/tmp/fstab/具有读写权限
• 用户 harry 对文件/var/tmp/fstab 既不能读也不能写
• 其他用户(当前和将来的)能对文件/var/tmp/fstab 进行读操作
#cp /etc/fstab /var/tmp/fstab
#chown root.root /var/tmp/fstab
#chmod a-x /var/tmp/fstab
#setfacl -m u:natasha:rw /var/tmp/fstab
#setfacl -m u:harry:- /var/tmp/fstab
#chomd o=r /var/tmp/fstab
3.创建一个共享目录/home/managers 特性如下
• /home/managers 目录的所有权是 sysmgrs
• sysmgrs 组成员对目录有读写和执行的权限。除此之外的其他用户没有任何权限(root 用户除外)
• 在/home/managers 目录中创建的文件,其组所有权会自动设置为属于 sysmgrs组
#mkdir -pv /home/managers
#chown sysmgrs:sysmgrs /home/managers
#chmod g=rwx /home/mangers
#chmod o=- /home/mangers
#chmod 770 /home/managers
#chmod g+s /home/managers
var/tmp/fstab
#chmod a-x /var/tmp/fstab
#setfacl -m u:natasha:rw /var/tmp/fstab
#setfacl -m u:harry:- /var/tmp/fstab
#chomd o=r /var/tmp/fstab
3.创建一个共享目录/home/managers 特性如下
• /home/managers 目录的所有权是 sysmgrs
• sysmgrs 组成员对目录有读写和执行的权限。除此之外的其他用户没有任何权限(root 用户除外)
• 在/home/managers 目录中创建的文件,其组所有权会自动设置为属于 sysmgrs组
#mkdir -pv /home/managers
#chown sysmgrs:sysmgrs /home/managers
#chmod g=rwx /home/mangers
#chmod o=- /home/mangers
#chmod 770 /home/managers
#chmod g+s /home/managers