文章目录
1 文件基本权限及归属
1.1 权限和归属
基本权限
- r 指read 读取-允许查看内容
- w 指write 写入-允许修改内容
- x 指excute可执行-允许运行和切换
种类 | 普通文件 | 目录 |
---|---|---|
r | cat less head tail | 查看目录内容 ls |
w | vim > >> | 新建/删除/改名 mkdir rm mv |
x | 学习Shell脚本 | 切换到目录 cd |
共同决定最终权限
归属关系
- u 所有者 : 拥有此文件/目录的用户-user
- g 所属组 : 拥有此文件/目录的组- group
- o 其他用户: 除所有者/所属组以外的用户 - other
查看权限归属
- 执行 ls -l … … 命令查看
回到目录
[[root@baidu /]# ls -l
total 28
lrwxrwxrwx. 1 root root 7 Aug 12 2018 bin -> usr/bin
dr-xr-xr-x. 6 root root 4096 Mar 31 07:40 boot
// // // // // // // //
权限位 硬连接数 所有者 属组 大小(字节) 修改时间 文件名称 符号链接(快捷方式)的内容
# dr-xr-xr-x. 第1个字符为文件类型(-普通(含文本)文件,d目录,l符号链接文件,b块特殊文件,c字符文件,p先进先出特殊文件,s本地套接字)
# r-xr-xr-x 剩余9个字符,三集合,第一个3字符为所有者许可权,第二个为组中其它用户的许可权,第三个访问此文件的其他任何人的许可权
# r 读 w写(编辑) x可执行(搜索) -没有授予相应的许可权
# ‘ . ’字符表示具有安全上下文的文件,但没有其他替代访问方法
# 硬连接数 对于文件是硬链接数量 ,, 对于目录文件指的是子目录文件数量
- root超级管理员,具有文件的一切权限
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EphHYpTz-1591624293689)(0BFFF35C82CA4D24B31EE64CF124E182)]
在根目录下,默认/tmp目录具有特殊权限???不是全部特权,仅归属用用户或属组的文件才能进行wx操作,是t特权
# 权限 777 ,最后一位位t,,特殊权限
[root@nb /]# ls -ld /tmp/
drwxrwxrwt. 27 root root 4096 Jun 6 12:49 /tmp/
[root@nb tmp]# ls -ld /var/tmp
drwxrwxrwt. 9 root root 4096 6月 6 10:45 /var/tmp
[root@nb tmp]#
1.2 权限控制
chmod设置基本权限
- chmod [ugoa] [±=] [rwx] 文件
- 使用g=时当遇见-时后面失效
- 如设置chmod g=r-x /opt/learing 属组权限为r–
[root@server1 ~]# ls -ld /opt/learning
drwxrw-rwx. 2 root root 6 Jun 7 18:12 /opt/learning #原有属组rw-
[root@server1 ~]# chmod g=r-x /opt/learning #设置g=r-x
[root@server1 ~]# ls -ld /opt/learning
drwxr--rwx. 2 root root 6 Jun 7 18:12 /opt/learning #实际属组r-- ,x设置不成功,
#可直接 chmod g=rx 即可
- a 指all 包括ugo
- o 其他用户拥有w权限后,文件会变绿
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hBBRw03r-1591624293691)(A7057036990E4622B406D2D688ED0EC2)] - 针对目录
- r 查看目录内容
- w 新建/删除/改名,该目录的内容(子目录及文件),而对目录本身无法进行修改
-
- x 执行权限,切换到此目录 ,关系到用户能否切换(cd)到此目录
- 目录无x权限,目录下子文件也无法操作
- 只给一个w权限,是无效(不能进行新建/删除/改名 的操作),至少需要wx权限
- x 执行权限,切换到此目录 ,关系到用户能否切换(cd)到此目录
[yyn@server1 ~]$ ls -ld /opt/learning #opt/learing无x权限
drwxr--rw-. 4 root root 33 Jun 7 19:10 /opt/learning/
[yyn@server1 ~]$ cd /opt/learning/
-bash: cd: /opt/learning/: Permission denied #不能切换
[yyn@server1 ~]$ mv /opt/learning/nyy /opt/learning/y #不能改名
mv: failed to access '/opt/learning/y': Permission denied
[yyn@server1 ~]$ ls -ld /opt/learning/yyn #不能访问子目录文件
ls: cannot access '/opt/learning/yyn': Permission denied
[yyn@server1 ~]$ ls /opt/learning/ #只能查看本目录下第一层内容
ls: cannot access '/opt/learning/nyy': Permission denied
ls: cannot access '/opt/learning/root-yyn': Permission denied
nyy root-yyn
- 只给一个x权限,除除目录本身不能rw,其子目录文件仍为自身权限
[yyn@server1 ~]$ ls -ld /opt/learning #/opt/learning 的其他权限只有x
drwxr----x. 4 root root 33 Jun 7 19:10 /opt/learning/
[yyn@server1 ~]$ mkdir -p /opt/learning/yyn000 #不能创建子目录
mkdir: cannot create directory ‘/opt/learning/yyn000’: Permission denied
#已有子目录下文件保持原有权限
[yyn@server1 ~]$ ls /opt/learning/nyy
[yyn@server1 ~]$ cd /opt/learning/nyy #切换已有子文件
[yyn@server1 nyy]$ ls /opt/learning/nyy #查看
[yyn@server1 nyy]$ mkdir -p /opt/learning/nyy/text #新建已有文件的子文件
[yyn@server1 nyy]$ ls -ld /opt/learning/nyy/text
drwxrwxr-x. 2 yyn yyn 6 Jun 7 19:30 /opt/learning/nyy/text
[yyn@server1 nyy]$ ls -ld /opt/learning/nyy
drwxrwxr-x. 3 yyn yyn 18 Jun 7 19:30 /opt/learning/nyy
[yyn@server1 nyy]$ ls -ld /opt/learning/root-yyn
drwxr-xr-x. 2 root root 6 Jun 7 19:09 /opt/learning/root-yyn
[yyn@server1 nyy]$ mv /opt/learning/root-yyn /opt/learning/root-mv
mv: cannot move '/opt/learning/root-yyn' to '/opt/learning/root-mv': Permission denied
[yyn@server1 nyy]$
- -R o=- 递归设置权限
// 递归设置其他用户的文件权限
[root@nb ~]# mkdir -p /opt/aa/bb/cc/dd
[root@nb ~]# chmod -R o=--- /opt/aa //递归设置其他o=---
[root@nb ~]# ls -ld /opt/aa //目录及其子目录均设为o为---,而不是默认属性r-x
drwxr-x---. 3 root root 16 Jun 6 10:27 /opt/aa
[root@nb ~]# ls -ld /opt/aa/bb
drwxr-x---. 3 root root 16 Jun 6 10:27 /opt/aa/bb
[root@nb ~]# ls -ld /opt/aa/bb/cc
drwxr-x---. 3 root root 16 Jun 6 10:27 /opt/aa/bb/cc
[root@nb ~]# ls -ld /opt/aa/bb/cc/dd
drwxr-x---. 2 root root 6 Jun 6 10:27 /opt/aa/bb/cc/dd
[root@nb ~]#
权限位的8进制数
- r 对应4
- w 对应2
- x 对应1
- 使用数字权限形式
[root@nb /]# mkdir /nsd04
[root@nb /]# ls -ld /nsd04
drwxr-xr-x. 2 root root 6 Jun 6 11:45 /nsd04
[root@nb /]# chmod 750 /nsd04
[root@nb /]# ls -ld /nsd04
drwxr-x---. 2 root root 6 Jun 6 11:45 /nsd04
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XYT3xVOH-1591624293692)(061DF22D721E45E39DFC9684B170DA68)]
新建文件/目录的默认权限
- 普通(文本/二进制/数据)文件默认均不给x执行权限,其默认为644(root用户)或664(普通)
//root用户文本文件默认644
[root@server1 ~]# touch /opt/txt.txt
[root@server1 ~]# ls -ld /opt/txt.txt
-rw-r--r--. 1 root root 0 Jun 7 19:56 /opt/txt.txt
//二进制文件
[root@server1 ~]# ls -ld /etc/passwd
-rw-r--r--. 1 root root 2577 Jun 7 18:11 /etc/passwd
[root@server1 ~]# umask
0022
//普通用户文本文件默认664
[yyn@server1 nyy]$ touch /home/yyn/text.txt
[yyn@server1 nyy]$ ls -ld /home/yyn/text.txt
-rw-rw-r--. 1 yyn yyn 0 Jun 7 20:08 /home/yyn/text.txt
[yyn@server1 nyy]$ umask
0002
- 目录文件默认权限为755(root)或775(普通用户)
- 默认取决于umask值设置
//因umask值设置原因,root超级用户新建文件/目录的默认权限为755
[root@nb /]# umask //第一个0特殊权限,,022位777-022=755
0022
[root@nb /]# umask -S
u=rwx,g=rx,o=rx
[root@nb /]#
[yyn@server1 ~]$ umask
0002
[yyn@server1 ~]$ umask -S //普通用户默认新建目录775
u=rwx,g=rwx,o=rx
[yyn@server1 ~]$ ls -ld /home/yyn/test
drwxrwxr-x. 2 yyn yyn 6 Jun 7 20:15 /home/yyn/test
1.3 归属控制
chown设置归属关系
- chown 属主 文件…
- chown 属主:属组 文件…
- chown :属组 文件…
- -R 递归修改,子目录权限
属主指所有者,属组为所属组(???组)
[root@nb ~]# mkdir /chown-test
[root@nb ~]# ls -ld /chown-test/
drwxr-xr-x. 2 root root 6 6月 6 14:11 /chown-test/
[root@nb ~]# groupadd tmooc
[root@nb ~]# chown yyn:tmooc /chown-test/ //chown 属主:属组 文件...
[root@nb ~]# ls -ld /chown-test/
drwxr-xr-x. 2 yyn tmooc 6 6月 6 14:11 /chown-test/
//更改文件/chown-test的所有者(所属主)
[root@nb ~]# chown root /chown-test/ //chown 属主 文件...
[root@nb ~]# ls -ld /chown-test/
drwxr-xr-x. 2 root tmooc 6 6月 6 14:11 /chown-test/
//更改文件/chown-test的所属组()
[root@nb ~]# chown :boy /chown-test/ //chown :属组 文件...
[root@nb ~]# ls -ld /chown-test/
drwxr-xr-x. 2 root boy 6 6月 6 14:11 /chown-test/
[root@nb ~]#
Linux系统的权限判定
- 判断用户对于数据所处的身份
- 所有者 → 所属组 → 其他人 ,匹配即停止
- 查看相应身份权限位
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PaN1uoR7-1591624293694)(44A6737C23AC46EFA685D76B6CA0D635)] - 用户加入组,继承组所有权限,不会立即生效,需要重新登录后才能生效
- 所有者没有x权限,所属组具有x权限,不能切换到目录
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q8H7myUL-1591624293696)(8BFFDE62A8C04FCEB6B189A55C42FDE0)]
2 附加权限
特殊权限的作用
- 特殊权限: 叠加于权限u/g/o分组之上
- 用于传递程序执行身份/限制目录写入权
Set UID
- 占用属主(User)的 x 位
- 显示为 s 或 S,取决于属主是否有 x 权限
- 仅对可执行的程序有意义
- 当其他用户执行带SUID标记的程序时,具有此程序属主的身份和相应权限
仅仅了解
Set GID
- 占用属组(Group)的x(权限)位
- 显示为s或S ,取决于属组是否有x权限
- s 为覆盖的属组有x权限
- S 没有x权限
- 对目录有效
- 在一个具有SGID权限的目录下,新建的文档会自动继承此目录的属组身份
- chmod g+s 目录
- 如chmod g+s /nsd15/
[root@nb /]# mkdir /nsd15
[root@nb /]# chown :tmooc /nsd15 //修改所属组
[root@nb /]# ls -ld /nsd15
drwxr-xr-x. 2 root tmooc 6 6月 6 15:28 /nsd15
[root@nb /]# mkdir /nsd15/test01
[root@nb /]# ls -ld /nsd15/test01
drwxr-xr-x. 2 root root 6 6月 6 15:29 /nsd15/test01
[root@nb /]# chmod g+s /nsd15/ //设置SETGID
[root@nb /]# ls -ld /nsd15/
drwxr-sr-x. 3 root tmooc 20 6月 6 15:29 /nsd15/
[root@nb /]# mkdir /nsd15/test02
[root@nb /]# ls -ld /nsd15/test02 //查看所属组信息
drwxr-sr-x. 2 root tmooc 6 6月 6 15:30 /nsd15/test02
[root@nb /]# touch /nsd15/1.txt
[root@nb /]# ls -l /nsd15/1.txt
-rw-r--r--. 1 root tmooc 0 6月 6 15:31 /nsd15/1.txt
[root@nb /]# mkdir /nsd15/test02/aaa
[root@nb /]# ls -ld /nsd15/test02/aaa //查看二层子目录所属组信息
drwxr-sr-x. 2 root tmooc 6 6月 6 15:31 /nsd15/test02/aaa
[root@nb /]#
Sticky Bit粘滞位
- 粘滞位,Sticky Bit权限(t权限)
- [root@nb /]# ls -ld /tmp/
drwxrwxrwt. 27 root root 4096 6月 6 15:37 /tmp/ - 权限位中的t 表示为其他用户在/tmp目录下没有别人创建的子目录文件的w权限
- 允许任何人写入,但禁止更改其他用户的文件
- [root@nb /]# ls -ld /tmp/
- 占用其他人(Other)的 x 位
- 显示t 或 T ,取决于其他人是否有 x 权限,如type为f/无则为 T
- 适用于目录, 用来限制用户滥用写入权
- 在设置了粘滞位的文件夹下,即使用户有写入权限,也不能删除或改名其他用户文档
[redhat@server1 ~]$ ls -ld /tmp //目录/tmp具有t权限
drwxrwxrwt. 18 root root 4096 Jun 7 21:00 /tmp
[redhat@server1 ~]$ ls -ld /tmp/yyn/ //属主yyn属组yyn的目录/tmp/yyn
drwxrwxr-x. 2 yyn yyn 6 Jun 7 20:57 /tmp/yyn/
[redhat@server1 ~]$ mv /tmp/yyn/ /tmp/redhat //用户redhat无法重命名yyn目录
mv: cannot move '/tmp/yyn/' to '/tmp/redhat': Operation not permitted
[redhat@server1 ~]$
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T9kXrRcn-1591624293697)(20699F735BCA4AD5AFFB6CD0872EAB90)]
特殊t权限示例
# 1 设置777权限 以及t权限
[root@nb /]# mkdir /nsd16
[root@nb /]# ls -ld /nsd16
drwxr-xr-x. 2 root root 6 6月 6 15:46 /nsd16
[root@nb /]# ls -ld /nsd16 //查看目录nsd16权限
drwxr-xr-t. 2 root root 6 6月 6 15:46 /nsd16
[root@nb /]# chmod 777 /nsd16 //设置目录全部权限
[root@nb /]# ls -ld /nsd16
drwxrwxrwx. 2 root root 6 6月 6 15:46 /nsd16
[root@nb /]# chmod o+t /nsd16 //设置t权限
[root@nb /]# ls -ld /nsd16
drwxrwxrwt. 2 root root 6 6月 6 15:46 /nsd16
[root@nb /]#
- 两个用户操作同一个目录验证
2 gelin用户验证
[gelin01@nb ~]$ ls -ld /nsd16
drwxrwxrwt. 2 root root 38 6月 6 15:49 /nsd16
[gelin01@nb ~]$ echo 222 > /nsd16/gelin.txt
[gelin01@nb ~]$ cat /nsd16/gelin.txt
222
[gelin01@nb ~]$ echo 333 > /nsd16/yyn.txt //无法改其他人文件
-bash: /nsd16/yyn.txt: 权限不够
[gelin01@nb ~]$ ls -ld /nsd16/yyn.txt
-rw-rw-r--. 1 yyn yyn 4 6月 6 15:52 /nsd16/yyn.txt
# 3 yyn用户验证
[yyn@nb ~]$ echo 111 > /nsd16/gelin.txt
-bash: /nsd16/gelin.txt: 权限不够
[yyn@nb ~]$ echo 111 > /nsd16/yyn.txt
[yyn@nb ~]$ cat /nsd16/yyn.txt
111
回到目录
3 ACL策略管理
ACL策略的作用
- 文档归属的局限性
- 任何人只属于3种角色: 属主/属组/其他人
- 无法更精细的控制
- acl访问策略
- 能够对个别用户/个别组设置独立的权限
- 大多数挂载的EXT3/4、XFS文件系统默认已支持
定义ACL控制策略
- setfacl命令
- set file access control list ,即“设置文件访问控制列表”
- 格式 setfacl [参数][文件]
- setfacl [选项] u:用户名:权限 文件…
- setfacl [选项] g:用户名:权限 文件…
- 常用命令选项
- -m modify定义一条ACL策略
- -x 清除指定的ACL策略
- -b 清除所有已设置的ACL策略
- -R 递归设置ACL策略
设置ACL权限
setfack -m u:[用户]:[rwx]
# 用户yyn针对/nsd15设置acl权限,,实现单独设置
[root@nb /]# id yyn
uid=1001(yyn) gid=1001(yyn) 组=1001(yyn)
[root@nb /]# chmod o=--- /nsd15
[root@nb /]# setfacl -m u:yyn:rx /nsd15 #添加用户yyn对文件的rx权限
[root@nb /]# getfacl /nsd15
getfacl: Removing leading '/' from absolute path names
# file: nsd15
# owner: root
# group: tmooc
# flags: -s-
user::rwx
user:yyn:r-x
group::r-x
mask::r-x
other::---
[root@nb /]# su - yyn #验证
上一次登录:六 6月 6 15:45:42 CST 2020pts/1 上
[yyn@nb ~]$ cd /nsd15
[yyn@nb nsd15]$ pwd
/nsd15
[yyn@nb nsd15]$ exit
登出
//三个用户设置acl
[root@nb /]# mkdir /nsd18
[root@nb /]# setfacl -m u:yyn:rwx /nsd18 #设置acl
[root@nb /]# setfacl -m u:yyn1:rx /nsd18
[root@nb /]# setfacl -m u:gelin01:rx /nsd18
// 查看acl
[root@nb /]# getfacl /nsd18
getfacl: Removing leading '/' from absolute path names
# file: nsd18
# owner: root
# group: root
user::rwx
user:yyn:rwx
user:yyn1:r-x
user:gelin01:r-x
group::r-x
mask::rwx
other::r-x
// 清除单个用户acl
[root@nb /]# setfacl -x u:yyn /nsd18
[root@nb /]# setfacl -x u:gelin01 /nsd18
[root@nb /]# getfacl /nsd18
getfacl: Removing leading '/' from absolute path names
# file: nsd18
# owner: root
# group: root
user::rwx
user:yyn1:r-x
group::r-x
mask::r-x
other::r-x
//清除所有用户acl
[root@nb /]# setfacl -b /nsd18
[root@nb /]# getfacl /nsd18
getfacl: Removing leading '/' from absolute path names
# file: nsd18
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
[root@nb /]#
- 某文件为全局权限777,但单独拒绝某个人
[root@nb /]# mkdir /public
[root@nb /]# chmod 777 /public
[root@nb /]# setfacl -m u:yyn:- /public
[root@nb /]# getfacl /public
getfacl: Removing leading '/' from absolute path names
# file: public
# owner: root
# group: root
user::rwx
user:yyn:---
group::rwx
mask::rwx
other::rwx
[root@nb /]#
- 禁止某用户对某目录有任何权限,但不影响其他用户对此目录的访问,直接设置setfacl u:[某用户]:- [目录]
练习:
例1:chmod权限设置
- 以root用户新建/nsddir/目录,在该目录下新建文件readme.txt
- 使用户zhangsan能够在/nsddir/目录下创建/删除子目录
- 使用户zhangsan能够修改/nsddir/readme.txt文件的内容
案例2:chown归属设置
-
新建/tarena1目录
a)将属主设为gelin01,属组设为tarena组
b)使用户gelin01对此目录具有rwx权限,其他人对此目录无任何权限 -
使用户gelin02能进入、查看/tarena1文件夹(提示:将gelin02加入所属组)
-
新建/tarena2目录
a)将属组设为tarena
b)使tarena组的任何用户都能在此目录下创建、删除文件 -
新建/tarena/public目录
a)使任何用户对此目录都有rwx权限
b)拒绝zhangsan进入此目录,对此目录无任何权限(提示:ACL单独拒绝)
案例3:权限设置
- 创建文件夹/data/test,设置目录的访问权限,使所有者和所属组具备读写执行的权限;其他人无任何权限。
- 递归修改文件夹/data/test的归属使所有者为zhangsan,所属组为tarena。
- 请实现在test目录下,新建的所有子文件或目录的所属组都会是tarena。
- 为lisi创建ACL访问权限,使得lisi可以查看/etc/shadow文件
案例4:虚拟机上操作
- 将文件 /etc/fstab 拷贝为 /var/tmp/fstab,并调整文件 /var/tmp/fstab权限 满足以下要求:
- 此文件的拥有者是 root
- 此文件对任何人都不可执行
- 用户 natasha 能够对此文件具备读和写操作
- 用户 harry 对此文件既不能读,也不能写
案例5:虚拟机上操作
- 创建一个共用目录 /home/admins,要求如下:
- 此目录的所属组是 adminuser
- adminuser 组的成员对此目录有读写和执行的权限,并且其他用户没有任何权限
- 在此目录中创建的文件,其所属组会自动设置为 属于 adminuser 组