DAY 07
权限
1.linux中权限在文件中标识
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EyZE0UK0-1670305105988)(D:\迅雷下载\屏幕截图 2022-12-03 141433.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kEnCvcwa-1670305105989)(D:\迅雷下载\屏幕截图 2022-12-03 140929.png)]
2.权限的描述形式
(1)字符形式 r read w write x excute
(2)数值形式 r=4 w=2 x=1
-rw-------. 1 root root 1456 Nov 19 12:19 anaconda-ks.cfg 600
drwxr-xr-x. 2 root root 6 Nov 19 14:12 Desktop 755
3.权限字符的含义
文本文件: r 查看文件的内容 cat tac more less head tail grep vim
w 编辑文件内容 vim echo 123 >a.txt cat << EOF > FILE
x 执行文件中内容(脚本)命令文件
目录文件: r 查看目录中的文件名 ls
w 创建文件 touch mkdir cp mv > rm
x 执行cd (r-x) (rwx)
4.权限的匹配规则
可执行文件(命令文件)进程的所属用户身份是用户发起者身份;
判断发起者身份是否是目标文件所属用户,是,只匹配目标文件所属用户位的权限
不是,判断发起者身份是否是目标文件所属组用户,是组用户,只匹配目标文件所属组的权限
不是,直接匹配目标文件其他用户位的权限。
5.修改权限
chmod 权限 FILE…
注:作为普通用户只能更改属于自己的文件的权限。
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
6.创建文件默认的权限值
文本文件最高的权限值:666
权限掩码(权限过滤值:022 #umask
文本文件默认的权限值:644
目录文件最高的权限值:777
权限掩码(权限过滤值:022 #umask
目录文件默认的权限值:755
rw- rw- rw- 6 6 6
--- -wx -wx 0 3 3
rw- r-- r-- 6 3 3-----x 644
练习题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 suid 所属用户的禁锢位
仅对可执行文件(命令文件)设置有意义:
可执行文件(命令文件)设置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 sgid 所属组的禁锢位
(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 sticky 冒险位
仅对目录文件设置有意义:
目录文件设置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 查看文件的权限列表
[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
[root@localhost ~]# groupadd sysmgrs
[root@localhost ~]# useradd -G sysmgrs natasha
[root@localhost ~]# useradd harry
[root@localhost ~]# usermod -G sysmgrs harry
[root@localhost ~]# useradd -s /sbin/nologin sarah
[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin
tss:x:59:59:Account used for TPM access:/dev/null:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
geoclue:x:997:995:User for geoclue:/var/lib/geoclue:/sbin/nologin
gluster:x:996:992:GlusterFS daemons:/run/gluster:/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
pipewire:x:995:991:PipeWire System Daemon:/var/run/pipewire:/sbin/nologin
pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
qemu:x:107:107:qemu user:/:/sbin/nologin
clevis:x:994:988:Clevis Decryption Framework unprivileged user:/var/cache/clevis:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
unbound:x:993:987:Unbound DNS resolver:/etc/unbound:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
chrony:x:992:986::/var/lib/chrony:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
setroubleshoot:x:991:984::/var/lib/setroubleshoot:/sbin/nologin
saslauth:x:990:76:Saslauthd user:/run/saslauthd:/sbin/nologin
libstoragemgmt:x:989:982:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
dnsmasq:x:980:980:Dnsmasq DHCP and DNS server:/var/lib/dnsmasq:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
sssd:x:979:979:User for sssd:/:/sbin/nologin
cockpit-ws:x:978:978:User for cockpit web service:/nonexisting:/sbin/nologin
cockpit-wsinstance:x:977:977:User for cockpit-ws instances:/nonexisting:/sbin/nologin
flatpak:x:976:976:User for flatpak system helper:/:/sbin/nologin
colord:x:975:975:User for colord:/var/lib/colord:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
gnome-initial-setup:x:974:974::/run/gnome-initial-setup/:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
kerwin:x:1000:1000:RHEL8.5:/home/kerwin:/bin/bash
zhangsan:x:1001:1004::/home/zhangsan:/bin/bash
natasha:x:1002:1006::/home/natasha:/bin/bash
harry:x:1003:1007::/home/harry:/bin/bash
sarah:x:1004:1008::/home/sarah:/sbin/nologin
[root@localhost ~]# echo modteed |passwd --stdin natasha
Changing password for user natasha.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# echo modteed |passwd --stdin harry
Changing password for user harry.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# echo modteed |passwd --stdin sarah
Changing password for user sarah.
passwd: all authentication tokens updated successfully.
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 进行读操作
[root@localhost ~]# cp /etc/fstab /var/tmp
cp: overwrite '/var/tmp/fstab'? y
[root@localhost ~]# chown root.root /var/tmp/fstab
[root@localhost ~]# chmod a-x /var/tmp/fstab
[root@localhost ~]# setfacl -m u:natasha:rw /var/tmp/fstab
[root@localhost ~]# setfacl -m u:harry:- /var/tmp/fstab
[root@localhost ~]# chmod o=r /var/tmp/fstab
[root@localhost ~]# ll /var/tmp/fstab
-rw-rw-r--+ 1 root root 615 Dec 5 02:51 /var/tmp/fstab
3.创建一个共享目录/home/managers 特性如下
• /home/managers 目录的所有权是 sysmgrs
• sysmgrs 组成员对目录有读写和执行的权限。除此之外的其他用户没有任何权限(root 用户除外)
• 在/home/managers 目录中创建的文件,其组所有权会自动设置为属于 sysmgrs组
[root@localhost ~]# mkdir -pv /home/managers
[root@localhost ~]# chown sysmgrs:sysmgrs /home/managers
[root@localhost ~]# chmod g=rwx /home/managers
[root@localhost ~]# chmod 770 /home/managers
[root@localhost ~]# chown o=- /home/managers
[root@localhost ~]# chmod g+s /home/managers
户没有任何权限(root 用户除外)
• 在/home/managers 目录中创建的文件,其组所有权会自动设置为属于 sysmgrs组
[root@localhost ~]# mkdir -pv /home/managers
[root@localhost ~]# chown sysmgrs:sysmgrs /home/managers
[root@localhost ~]# chmod g=rwx /home/managers
[root@localhost ~]# chmod 770 /home/managers
[root@localhost ~]# chown o=- /home/managers
[root@localhost ~]# chmod g+s /home/managers