RHCSA Linux 系统 文件系统权限
1. 文件的一般权限
(1)文件权限标识解读
drwxr - xr - x. 12 root root 144 Feb 17 16:51 usr
➤d:文件类型(d 表示目录)
➤rwx:文件所有者权限(读 r,写 w,执行 x)
➤r - x:所属组用户权限
➤r - x:其他用户权限
➤. :意味着文件用了 SELinux 安全相关设置,没掺和其它访问控制
如果此位置是空格,说明系统没有给这文件用啥特殊访问控制手段
如果此位置是 “+”,就是文件既用了 SELinux 安全设置,还搭配了像 ACL 这类别的访问控制措施
➤12:文件硬链接数
➤root:所有者
➤root:所属组
➤144:文件大小,单位是 B,字节
➤Feb 17 16:51:修改时间
➤usr:文件名
(2)权限对象与权限类型
① 权限对象
➤owner 属主,缩写 u
➤group 属组,缩写 g
➤other 其他,缩写 o
② 权限类型
➤r:Read 读
➤w:Write 写
➤x:Execute 执行
❗❗❗ root 用户不受文件权限的读写限制,执行权限受限制
(3)权限表示
(4)修改权限 - chmod 命令
① 格式
chmod [选项] [ugoa] [±=] [rwx] 文件或目录
chmod [选项] nnn 文件或目录
② 选项
-R 递归修改指定目录下的所有文件、子目录权限
③
ugoa:u 属主、g 属组、o 其他、a 所有用户
±=:+ 添加权限、- 取消权限、= 只赋予指定权限
nnn:用三位数八进制数字表示权限
(5)权限作用
① 文件
➤r:读取内容
➤w:更改内容
➤x:作为可执行文件
② 目录
➤r:列出目录内文件名
➤w:创建或删除目录内文件
➤x:切换到目录
(6)修改文件或目录的属主和属组 - chown
① 修改文件或目录的所有者
格式:chown [选项] 新属主 [:[新属组]] 文件或目录
选项:-R 可递归设置指定目录下的全部文件(包括子目录和子目录中的文件)的所属关系
② 修改文件或目录的属组
命令格式:
chown [选项] : 新属组 文件或目录
chgrp [选项] 新属组 文件或目录
2. 文件和目录的特殊权限
(1)SUID 权限 系统默认
① 含义:在一般用户执行某些程序时,暂时获得该程序文件的所有权限
② 示例:passwd,任何用户用此指令都可以修改自己的密码
❗❗❗ 仅对二进制文件有效
二进制文件
定义:由 0 和 1 组成机器语言代码,计算机可直接处理,像可执行程序、动态链接库,可直接阅读的文本文件不同
区分方式:
① 扩展名:部分有特定的扩展名,如:.bin、.so (动态链接库)、.exe (Windows 可执行文件,Linux 较少用)
② file 命令:运行 file 文件名,显示 ELF 等相关信息是二进制文件
③ Vim:用 Vim 打开 大量乱码大多为二进制文件
❗❗❗ 执行过程中获得所有者的权限
❗❗❗ 只在程序执行时有效
③ 查询拥有 SUID 权限的文件
find /-perm/4000(4:代表拥有者的 000:S 权限位)
(2)SGID 权限 后期设置chmod 指令
① 文件上:设置在二进制文件上,不论用户是谁,执行程序时进程所属组变成程序文件所属组
就像一个特殊工具,不管谁用它,都会临时加入工具所属的团队,以便能使用团队的资源和权限来做事
② 目录上:设置在目录上,目录内新建文件或目录所属组是此目录所属组,常用于多人团队项目开发
简单说,在一个拥有归属团队的仓库里,新添的东西都会自动归属于这个团队,便于管理
③ 查询命令
find /-perm 1/2000
(3)Sticky Bit 权限 后期用 chmod 指令
① 作用:只针对目录有效,在有 SBit 的目录下,用户若有该目录写及 x 权限,创建文件或目录后,只有文件所有者与 root 才有权删除
② 示例:在有粘滞位的目录里,即便 student 用户有写和执行权限,也只能删除自建的文件,防止误删或恶意删他人文件,保障系统安全
(4)设置特殊权限
可通过 chmod 命令设置,既可用 u+s、g+s、t 字符权限设置,也能用 nnnn 格式的四位八进制数字表示,后两位一般为权限数字,前两位是特殊权限标志数字
0:不设置特殊权限
1:只设置 sticky
2:只设置 SGID 和 sticky 权限
4:设置 SGID 权限
5:设置 SGID 和 sticky 权限
6:设置 SUID 和 SGID 权限
7:设置 SUID,SGID,sticky 三种权限
3. ACL 权限
(1)ACL 权限管理命令
① 查看 ACL 权限
getfacl 文件名
② 设定 ACL 权限
语法:setfacl 选项 文件名
选项:
➤-m:设定 ACL 权限 (u: 用户名:权限或 g: 组名:权限)
➤-x:删除指定的 ACL 权限
➤-b:删除所有的 ACL 权限
➤-k:删除默认 ACL 权限
➤-R:递归设定 ACL 权限
③ 示例
▷给用户和用户组添加 ACL 权限
用户:setfacl -m u: 用户名:权限 指定文件名
用户组:setfacl -m g: 组名: 权限 指定文件名
▷递归设置
setfacl -R -m u: 用户名:权限 文件名(子目录和文件继承)
▷给目录设置默认权限
setfacl -m d:u: 用户名:权限 目录名(新建子文件继承)
4. 权限掩码 umask
(1)设置新建文件或目录的默认权限
新建文件默认权限 = 666 - umask 值
新建目录默认权限 = 777 - umask 值
(2)操作命令
① 查看
umask
② 临时修改
umask 000
③ 永久修改
vim /etc/profile(或 vi /etc/profile)
添加
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
else
umask 022
fi
退出 /etc/profile
source /etc/profile