用户和组
-rw-r--r-- 1 root root 16099840 Jan 9 16:05 fabric-baseos.tar
-rwxr-xr-x 1 root root 788 Nov 21 2021 install_env_china_20111120.sh
- 文件类型为普通的文件
rw-r–r-- 权限 r 读写 w write x execute 执行
[外链图片转存中…(img-YCH1UBtk-1655620461849)]
user—》owner 拥有者 --》u
group --》g
others --》o
all --》a
执行权限 x 对文件就是具有执行文件里的命令的权限 ./a.sh
对文件夹就是进入文件夹或者搜索文件夹里的内容 cd find
[外链图片转存中…(img-9aiiP5CO-1655620461850)]
chmod
修改用户的权限
[外链图片转存中…(img-0CPxdoN1-1655620461851)]
[root@localhost shell]# mkdir shenjiemi
[root@localhost shell]# ll
总用量 0
drwxr-xr-x. 2 root root 6 6月 16 19:40 shenjiemi
drwxr-xrwx. 5 root root 61 6月 16 19:37 siyuxiang
[root@localhost shell]# chmod u-wx,g+w,o-rwx shenjiemi/
[root@localhost shell]# ll
总用量 0
dr--rwx---. 2 root root 6 6月 16 19:40 shenjiemi
drwxr-xrwx. 5 root root 61 6月 16 19:37 siyuxiang
[root@localhost shell]# chmod u-wx,g+w,o=rwx shenjiemi/
[root@localhost shell]# ll
总用量 0
dr--rwxrwx. 2 root root 6 6月 16 19:40 shenjiemi
drwxr-xrwx. 5 root root 61 6月 16 19:37 siyuxiang
不指定ugoa时默认修改所有用户的权限
[root@localhost shell]# chmod +x shenjiemi/
[root@localhost shell]# ll
总用量 0
dr-xrwxrwx. 2 root root 6 6月 16 19:40 shenjiemi
drwxr-xrwx. 5 root root 61 6月 16 19:37 siyuxiang
[root@localhost shell]# chmod -x shenjiemi/
[root@localhost shell]# ll
总用量 0
dr--rw-rw-. 2 root root 6 6月 16 19:40 shenjiemi
drwxr-xrwx. 5 root root 61 6月 16 19:37 siyuxiang
-R
递归修改指定目录下的所有文件、子目录的权限
[root@localhost shell]# chmod -R u=rwx,g-rwx,o-rwx nongda
[root@localhost shell]# chmod 777 liqiang/
[root@localhost shell]# ll
总用量 0
drwxrwxrwx. 2 root root 6 6月 16 19:46 liqiang
drwx------. 3 root root 19 6月 16 19:42 nongda
dr--rw-rw-. 2 root root 6 6月 16 19:40 shenjiemi
drwxr-xrwx. 5 root root 61 6月 16 19:37 siyuxiang
[外链图片转存中…(img-AC9RQ6k8-1655620461851)]
[root@localhost shell]# chmod 700 liqiang/ # 指定文件所有者的权限为rwx,文件所属组和其他用户没有任何权限
[root@localhost shell]# ll
总用量 0
drwx------. 2 root root 6 6月 16 19:46 liqiang
drwx------. 3 root root 19 6月 16 19:42 nongda
dr--rw-rw-. 2 root root 6 6月 16 19:40 shenjiemi
drwxr-xrwx. 5 root root 61 6月 16 19:37 siyuxiang
chown
改变文件的所属主,只有root用户可以改变文件的所有者
[外链图片转存中…(img-zpJ7fPOC-1655620461852)]
chown 属主 文件 # 改变文件的属主
chown :属组 文件 # 改变文件数组
chown 属主:属组 文件 # 改变文件的属主和属组
[root@lier 616]# ll test -d
drwxr-xr-x. 2 root root 6 6月 7 00:26 test
[root@lier 616]# chown lwq test
[root@lier 616]# ll test -d
drwxr-xr-x. 2 lwq root 6 6月 7 00:26 test
[root@lier 616]# chown :gaibang test
[root@lier 616]# ll test -d
drwxr-xr-x. 2 lwq gaibang 6 6月 7 00:26 test
[root@lier 616]# chown fuxintao:feng test
[root@lier 616]# ll test -d
drwxr-xr-x. 2 fuxintao feng 6 6月 7 00:26 test
umask
权限掩码
作用:可以用来设置新建的文件或者文件夹的默认权限
[外链图片转存中…(img-00UShRGn-1655620461853)]
[root@lier ~]# umask #查看系统默认权限掩码
0022
[root@lier ~]# umask -S #查看新创建的文件夹的默认权限
u=rwx,g=rx,o=rx
临时更改umask的值
[root@lier ~]# umask 0077
[root@lier ~]# umask
0077
[root@lier ~]# umask 0022
[root@lier ~]# umask
0022
新建一个文件夹,查看文件夹的权限
[root@lier 616]# mkdir test
[root@lier 616]# ll test -d
drwxr-xr-x. 2 root root 6 6月 7 00:26 test
文件夹的初始权限是777,权限掩码是022,所以新建一个文件夹的默认权限就是777-022=755
新建一个文件,查看文件的权限
[root@lier 616]# touch test.txt
[root@lier 616]# ll test.txt
-rw-r--r--. 1 root root 0 6月 7 00:45 test.txt
文件夹的初始权限是666,权限掩码是022,所以新建一个文件夹的默认权限就是666-022=644
永久修改umask的值
在**/etc/profile**文件中可以永久修改umask的值
[root@localhost shell]# vim /etc/profile
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
umask 002
else
umask 022
fi
# 当用户的UID大于199且/usr/bin/id 的组名等于用户名时,umask设为002,否则设为022
示例:
[root@lier 616]# id lwq
uid=1002(lwq) gid=1002(lwq) 组=1002(lwq)
[root@lier 616]# su - lwq
上一次登录:日 6月 5 02:08:00 CST 2022
[lwq@lier ~]$ umask
0002
[root@lier 616]# id qiaofeng
uid=10002(qiaofeng) gid=600(gaibang) 组=600(gaibang),0(root)
[root@lier 616]# su qiaofeng
sh-4.2$ umask
0022
启动bash时初始化文件的执行顺序:
1./etc/profile
2.~/.bash_profile
3.~/.bashrc
4./etc/bashrc
[外链图片转存中…(img-Fy6PoHJ7-1655620461855)]
chattr
[外链图片转存中…(img-ga4hylNz-1655620461856)]
chattr设置文件的隐藏属性
可以控制root用户的权限
append only (a),immutable(i)
a
chattr +a 文件或目录 :可以在文件中增加内容、在目录中新增文件或目录,但是不能修改和删除
# 给文件设置隐藏属性
[root@lier wudang]# chattr +a wd.txt
[root@lier wudang]# lsattr
---------------- ./zhangsanfeng
-----a---------- ./wd.txt
# 可以向文件中写入内容
[root@lier wudang]# echo 1234 >>wd.txt
[root@lier wudang]# cat wd.txt
1234
# 不能删除或修改文件中的内容
[root@lier wudang]# >wd.txt
-bash: wd.txt: 不允许的操作
# 取消文件的隐藏属性
[root@lier wudang]# chattr -a wd.txt
[root@lier wudang]# lsattr |grep wd.txt
---------------- ./wd.txt
# 给目录设置隐藏属性
[root@lier 616]# chattr +a wudang
[root@lier 616]# lsattr |grep wudang
-----a---------- ./wudang
[root@lier 616]# cd wudang
[root@lier wudang]# ls
4913 wd.tx~ wd.txt wd_txt.swp zhangsanfeng
# 可以在目录中新建文件
[root@lier wudang]# mkdir test
[root@lier wudang]# ls
4913 test wd.tx~ wd.txt wd_txt.swp zhangsanfeng
# 不能删除文件
[root@lier wudang]# rm -rf test
rm: 无法删除"test": 不允许的操作
# 取消目录的隐藏属性
[root@lier 616]# chattr -a wudang
[root@lier 616]# lsattr |grep wudang
---------------- ./wudang
i
chattr +i 文件或目录 :锁定文件或目录
# 锁定文件
[root@lier wudang]# chattr +i wd.txt
[root@lier wudang]# lsattr | grep wd.txt
----i-----------
[root@lier wudang]# echo 2324 >>wd.txt
-bash: wd.txt: 权限不够
./wd.txt
[root@lier wudang]# echo 2324 >>wd.txt
-bash: wd.txt: 权限不够
[root@lb1 wangdan]# chattr +i /etc/passwd
[root@lb1 wangdan]# useradd xiaomi
useradd:无法打开 /etc/passwd
[root@lb1 wangdan]# echo 123456 >>/etc/passwd
-bash: /etc/passwd: 权限不够
# 锁定目录
[root@lier 616]# chattr +i wudang
[root@lier 616]# lsattr |grep wudang
----i----------- ./wudang
[root@lier 616]# cd wudang
[root@lier wudang]# ls
test wd.tx~ wd.txt wd.tz~ zhangsanfeng
[root@lier wudang]# mkdir ad
mkdir: 无法创建目录"ad": 权限不够
[root@lier wudang]# rm -rf zhangsanfeng/
rm: 无法删除"zhangsanfeng/": 权限不够
lsattr
查看文件的隐藏属性
[root@lier 616]# lsattr |grep wudang
----i----------- ./wudang
[root@lier wudang]# lsattr
---------------- ./zhangsanfeng
-----a---------- ./wd.txt
suid
[外链图片转存中…(img-5O4ovmht-1655620461857)]
给文件设置suid权限后,每个用户使用该文件时都是以root用户的权限去使用的
suid特别权限: 某个命令 ,例如:mkdir 普通用户在执行mkdir的时候,会以命令的属主(user)的身份去执行,一般情况下所有的命令,归root所有。普通用户在执行具有suid权限位的命令的时候,以root身份去执行
当文件所有者有执行权限时,给文件设置suid权限后,执行权限x会变为s;如果没有执行权限,则为S。文件所属组和其他用户的特别权限同上。
# 当mkdir命令没有suid权限时,普通用户不能在root用户所属的目录下创建文件
[root@lier wudang]# ll -d /bin/mkdir
-rwxr-xr-x. 1 root root 79768 11月 17 2020 /bin/mkdir
[root@lier wudang]# su - wangdan
上一次登录:五 6月 17 22:39:51 CST 2022pts/0 上
[wangdan@lier ~]$ cd /
[wangdan@lier /]$ mkdir wuda
mkdir: 无法创建目录"wuda": 权限不够
# 给mkdir设置suid权限,使得普通用户可以在root用户的目录下创建文件
[root@lier wudang]# which mkdir
/usr/bin/mkdir
[root@lier wudang]# chmod u+s /bin/mkdir
[root@lier wudang]# ll -d /bin/mkdir
-rwsr-xr-x. 1 root root 79768 11月 17 2020 /bin/mkdir
[root@lier wudang]# su - wangdan
上一次登录:五 6月 17 19:14:27 CST 2022pts/0 上
[wangdan@lier ~]$ cd /
[wangdan@lier /]$ mkdir wangdan
不建议给很多命令设置suid权限,防止任何人都可以以root用户的的身份去执行了
[root@lb1 wangdan]# chmod +s /bin/mkdir
[root@lb1 wangdan]# ll /bin/mkdir
-rwsr-sr-x. 1 root root 79768 8月 20 2019 /bin/mkdir
[root@lb1 wangdan]# chmod -s /bin/mkdir
[root@lb1 wangdan]# ll /bin/mkdir
-rwxr-xr-x. 1 root root 79768 8月 20 2019 /bin/mkdir
[root@lb1 wangdan]# chmod 4755 /bin/mkdir
[root@lb1 wangdan]# ll /bin/mkdir
-rwsr-xr-x. 1 root root 79768 8月 20 2019 /bin/mkdir
[root@lb1 wangdan]# chmod 0755 /bin/mkdir
[root@lb1 wangdan]# ll /bin/mkdir
-rwxr-xr-x. 1 root root 79768 8月 20 2019 /bin/mkdir
[root@lb1 wangdan]#
粘滞位
当一个目录的权限为rwxrwxrwx时,任何用户都能在该目录下创建、修改、删除文件等操作。
设置粘滞位:chmod o+t 具有777权限的文件名
像/tmp目录的权限是应该设置成"rwxrwxrwx"的,那么对于tmp目录,任意用户都可以删除系统服务运行中的临时文件(别的用户的),所以此时我们就可以给这种文件的其他用户设置粘滞位,使得每个用户在777权限的目录下只能修改删除自己创建的文件,而不能修改、删除其他用户创建的文件。
对具有777权限的目录设置了粘滞位之后,正好可以保持⼀种动态的平衡:允许各⽤户在⽬录中任意写⼊、删除数据,但是禁⽌随意删除其他⽤户的数据。
粘滞位权限:可以给一个公共的目录设置,所有的用户都可以去这个目录下新建文件,保存文件,但是不能删除其他用户的文件,只能删除自己的文件。
[root@lb1 wangdan]# mkdir /test
[root@lb1 wangdan]# ll -d /test
drwxr-xr-x 2 root root 6 6月 19 10:27 /test
[root@lb1 wangdan]# chmod 777 /test
[root@lb1 wangdan]# ll /test -d
drwxrwxrwx 2 root root 6 6月 19 10:27 /test
[root@lb1 wangdan]# chmod o+t /test
[root@lb1 wangdan]# ll /test -d
drwxrwxrwt 2 root root 6 6月 19 10:27 /test
[root@lb1 wangdan]# su wangdan
[wangdan@lb1 wangdan]$ cd /test/
[wangdan@lb1 test]$ mkdir wang
[wangdan@lb1 test]$ ls
wang
[wangdan@lb1 test]$ exit
exit
[root@lb1 wangdan]# su - mi
上一次登录:日 6月 19 10:26:34 CST 2022pts/0 上
[mi@lb1 ~]$ cd /test/
[mi@lb1 test]$ ls
wang
[mi@lb1 test]$ rm -rf wang
rm: 无法删除"wang": 不允许的操作
[mi@lb1 test]$ mkdir mi
[mi@lb1 test]$ ls
mi wang
[mi@lb1 test]$ rm -rf mi
[mi@lb1 test]$ ls
wang
[mi@lb1 test]$
ACL
ACL(Access Control List)
一个文件/目录的访问控制列表,可以针对任意指定的用户/组使用权限字符分配rwx权限
设置ACL:setfacl指令
格式: setfacl 选项 规则 文件
常用选项
-m:新增或修改ACL中的规则
-b: 删除所有ACL规则
-x: 删除指定的ACL规则
查看ACL:getfacl指令
格式: getfacl 文件
setfacl 可以单独对用户和组设置权限
-m u:wuji:rwx u:qingshu:— g:wudang:rwx
-b
getfacl 查看权限
[root@lb1 lianxi]# groupadd wudang
[root@lb1 lianxi]# useradd -g wudang wuji
[root@lb1 lianxi]# useradd -g wudang qingshu
[root@lb1 lianxi]# setfacl -m u:wuji:rwx changsha
[root@lb1 lianxi]# getfacl changsha/
# file: changsha/
# owner: root
# group: root
user::rwx
user:wuji:rwx
group::r-x
mask::rwx
other::r-x
[root@lb1 lianxi]# setfacl -m m::r-- changsha/
[root@lb1 lianxi]# getfacl changsha/
# file: changsha/
# owner: root
# group: root
user::rwx
user:wuji:rwx #effective:r--
group::r-x #effective:r--
group:wudang:rwx #effective:r--
mask::r--
other::r-x
删除权限
[root@lb1 lianxi]# setfac -b changsha 删除权限
不授予任何权限
[root@lb1 lianxi]# setfacl -m u:qingshu:--- changsha 不授予qingshu任何的权限
[root@lb1 lianxi]# getfacl changsha/
# file: changsha/
# owner: root
# group: root
user::rwx
user:qingshu:---
group::r--
group:wudang:rwx
mask::rwx
other::r-x
一个用户属于某个组会继承这个组的权限。
1.主要组
2.次要组
用户的主要组(有效组)属于某个组,会继承这个组的权限,如果是附属组属于某个组,也会继承。
拒绝权限高于一切 —》针对用户
如果一个用户属于两个组,但是一个组允许,一个组拒绝 —》允许访问
[root@lier lianxi]# useradd cs -g wudang -G gaibang
[root@lier lianxi]# ll changsha
总用量 0
drwxr-xr-x. 2 wuji wudang 6 6月 17 19:24 wuji
[root@lier lianxi]# cd 616
[root@lier 616]# ls
liqiang siyuxiang wangdan xu.txt
nongda test xiaoxu xuyunhe
shenjiemi test.txt xiaoxu.txt
[root@lier 616]# ll -d nongda
drwx------. 3 root root 18 6月 6 19:53 nongda
[root@lier 616]# getfacl nongda
# file: nongda
# owner: root
# group: root
user::rwx
group::---
other::---
练习:
练习3:
1.新建目录taohuadao,要求taohuadao目录不能被删除,只能往目录里新建文件或者目录[root@lier 616]# useradd taohuadao [root@lier home]# chattr +a taohuadao [root@lier home]# lsattr|grep taohuadao -----a---------- ./taohuadao
2.新建一个空文件honghuamiji ,要求只能往honghuamiji里追加内容不能删除里面的内容
[root@lier 616]# mkdir honghuamiji [root@lier 616]# chattr +a honghuamiji [root@lier 616]# lsattr -----a---------- ./honghuamiji
3.新建目录wudang,组wudang目录下新建空文件zhangsanfeng,要求不能删除wudang目录下所有的文件
[root@lier 616]# mkdir wudang [root@lier 616]# chattr +a wudang [root@lier 616]# cd wudang/ [root@lier wudang]# mkdir zhangsanfeng [root@lier wudang]# ls zhangsanfeng [root@lier wudang]# rm -rf zhangsanfeng/ rm: 无法删除"zhangsanfeng/": 不允许的操作
4.复制/etc/passwd到当前目录下,设置passwd文件不能被修改
[root@lier 616]# chattr +i passwd [root@lier 616]# lsattr ----i----------- ./passwd
5.去掉honghuamiji文件的特殊属性,要求能删除里面的内容
[root@lier 616]# chattr -a honghuamiji/ [root@lier 616]# lsattr ---------------- ./honghuamiji
练习4:
1.新建3个组,wudang、shaolin、huashan[root@lier 616]# groupadd wudang [root@lier 616]# groupadd shaolin [root@lier 616]# groupadd huashan
2.新建用户qingshu 加入到wudang组
[root@lier 616]# useradd qingshu -g wudang
3.新建用户xiaozhao 加入到shaolin组
[root@lier 616]# useradd xiaozhao -g shaolin
4.新建用户linghu,liuyang加入到huashan组
[root@lier 616]# useradd linghu -g huashan [root@lier 616]# useradd liuyang -g huashan
5.新建一个目录wulin要求qingshu有读写执行的权限,xiaozhao有读执行的权限,linghu没有任何权限,如何实现?
[root@lier 616]# mkdir wulin [root@lier 616]# getfacl wulin # file: wulin # owner: root # group: root user::rwx group::r-x other::r-x [root@lier 616]# setfacl -m u:qingshu:rwx wulin [root@lier 616]# setfacl -m u:xiaozhao:r-x wulin [root@lier 616]# setfacl -m u:linghu:--- wulin [root@lier 616]# getfacl wulin # file: wulin # owner: root # group: root user::rwx user:qingshu:rwx user:xiaozhao:r-x user:linghu:--- group::r-x mask::rwx other::r-x
6.新建一个目录hunantv要求qingshu有读写执行的权限,xiaozhao有读执行的权限,liuyang有读执行的权限,linghu没有任何权限,如何实现?—》考虑使用ACL
[root@lier 616]# mkdir hunantv [root@lier 616]# getfacl hunantv # file: hunantv # owner: root # group: root user::rwx group::r-x other::r-x [root@lier 616]# setfacl -m u:qingshu:rwx hunantv/ [root@lier 616]# setfacl -m u:xiaozhao:r-x hunantv/ [root@lier 616]# setfacl -m u:liuyang:r-x hunantv/ [root@lier 616]# setfacl -m u:linghu:--- hunantv/ [root@lier 616]# getfacl hunantv/ # file: hunantv/ # owner: root # group: root user::rwx user:qingshu:rwx user:xiaozhao:r-x user:linghu:--- user:liuyang:r-x group::r-x mask::rwx other::r-x
练习5:
1.新建3个组,shuiguo,mifen ,shaokao[root@lier 616]# groupadd shuiguo [root@lier 616]# groupadd mifen [root@lier 616]# groupadd shaokao
2.新建3个用户,pingguo属于shuiguo组,jingshi属于mifen组,yueyang属于shaokao组
[root@lier 616]# useradd pingguo -g shuiguo [root@lier 616]# useradd jingshi -g mifen [root@lier 616]# useradd yueyang -g shaokao
3.在根目录下新建目录food,再将/etc/passwd文件复制到food目录下
[root@lier 616]# mkdir /food [root@lier 616]# cd /food [root@lier food]# cp /etc/passwd . [root@lier food]# ls passwd
4.设置权限,passwd文件能被shuiguo组读写,jingshi这个用户能读写执行,yueyang这个用户不能进行任何操作
[root@lier food]# ls passwd [root@lier food]# getfacl passwd # file: passwd # owner: root # group: root user::rw- group::r-- other::r-- [root@lier food]# setfacl -m g:shuiguo:rw- passwd [root@lier food]# setfacl -m u:jingshi:rwx passwd [root@lier food]# setfacl -m u:yueyang:--- passwd [root@lier food]# getfacl passwd # file: passwd # owner: root # group: root user::rw- user:jingshi:rwx user:yueyang:--- group::r-- group:shuiguo:rw- mask::rwx other::r--
5.然后去验证
[root@lier food]# su - jingshi [jingshi@lier ~]$ cd /food [jingshi@lier food]$ ls passwd [jingshi@lier food]$ tail -5 passwd linghu:x:10041:10039::/home/linghu:/bin/bash liuyang:x:10042:10039::/home/liuyang:/bin/bash pingguo:x:10043:10040::/home/pingguo:/bin/bash jingshi:x:10044:10041::/home/jingshi:/bin/bash yueyang:x:10045:10042::/home/yueyang:/bin/bash [jingshi@lier food]$ vim passwd # 进入文件删除了后两行 [jingshi@lier food]$ tail -5 passwd qingshu:x:10039:1044::/home/qingshu:/bin/bash xiaozhao:x:10040:7796::/home/xiaozhao:/bin/bash linghu:x:10041:10039::/home/linghu:/bin/bash liuyang:x:10042:10039::/home/liuyang:/bin/bash pingguo:x:10043:10040::/home/pingguo:/bin/bash [root@lier food]# su - yueyang [yueyang@lier ~]$ cd /food [yueyang@lier food]$ cat passwd cat: passwd: 权限不够 [yueyang@lier food]$ vim passwd # 权限不够 [root@lier food]# su - pingguo [pingguo@lier ~]$ cd /food [pingguo@lier food]$ ls passwd [pingguo@lier food]$ tail -3 passwd linghu:x:10041:10039::/home/linghu:/bin/bash liuyang:x:10042:10039::/home/liuyang:/bin/bash pingguo:x:10043:10040::/home/pingguo:/bin/bash [pingguo@lier food]$ vim passwd # 删除最后一行 [pingguo@lier food]$ tail -3 passwd xiaozhao:x:10040:7796::/home/xiaozhao:/bin/bash linghu:x:10041:10039::/home/linghu:/bin/bash liuyang:x:10042:10039::/home/liuyang:/bin/bash [pingguo@lier food]$ mv passwd .. mv: 无法将"passwd" 移动至"../passwd": 权限不够