————————原创: 厦门微思网络
概述
- 文件权限控制对文件的访问
- 可以针对文件所属用户、所属组和其他用户可以设置不同的权限
- 权限具有优先级。user 权限覆盖 group 权限,后者覆盖 other 权限
权限:读取、写入和执行
权限 | 对文件的影响 | 对目录的影响 |
r (读取) | 可以读取文件的内容 | 可以列出目录的内容(文件名) |
w (写入) | 可以更改文件的内容 | 可以创建或删除目录中的任意文件 |
x (执行) | 可以作为命令执行文件 | 目录可以成为当前工作目录(可以 cd 它,但还需要读取权限才能列出里面的文件) |
- 用户通常对目录具有 r 和 x 的权限,可以进入目录并列出文件(如果对目录只有 r 权限,则只能列出目录中文件名称,无法获得属性)
- 对文件所在目录具有所有权或写入权限的用户可以删除此文件,无论文件本身权限如何.
- root 用户拥有系统最高权限
查看文件和目录的权限及所有权
[student@workstation ~]$ touch test
[student@workstation ~]$ ls -l test
-rw-r--r--. 1 student student 0 May 17 18:44 test
[student@workstation ~]$ ls -ld .
drwx------. 17 student student 4096 May 17 18:44 .
[student@workstation ~]$ ls -ld /home
drwxr-xr-x. 5 root root 53 May 18 2022 /home
- 上述几个ls命令, 我们来看其输出的第一个字段 -rw-r--r--. drwx------. drwxr-xr-x.
- 第一位表示文件类型: - 表示普通文件、 d 表示目录、 l 表示软链接、 b 表示块设备、 c 表示字符设备、 p 表示管道、 s 表示 socket
- 接下来九位代表文件权限,分 3 组,每组 3 个字符,每组分别对应所属用户、所属组、其他用户权限
- 权限可以表示为: rwx 或 - (表示未设置权限)
权限依据优先匹配原则
权限标志位 | 对应权限 | 对应权值 | 文件权限 | 目录权限 | 每三位一组 |
1 | r | 4 | owner 读文件 | owner 读目录 | u |
4 5 6 | r w x | 4 2 1 | group 读文件 group 写文件 group 执行文件 | group 读目录 group 写目录 group 进入目录 | g |
7 8 9 | r w x | 4 2 1 | other 读文件 other 写文件 other 进入目录 | other 读目录 other 写目录 other 进入目录 | o |
更改文件和目录的权限
- chmod (change mode)命令用于修改文件权限,可使用符号法或八进制法来设置权限
符号法(Symbolic Method)
chmod Who/What/Which file|directory
- Who 是指 u、g、o、a(代表用户、组、其他、全部)
- What 是指 +、-、=(代表添加、删除、精确设置)
- Which 是指 r、w、x 或 X(代表读取、写入、执行文件或进入目录)
- 注:对目录设置执行权限需要使用
数值八进制法(Octal Method)
chmod ### file|directory
- 每个数字代表一个访问级别的权限:user、group、other
- 数字的计算方法是:将每个权限的数值加在一起,其中 4 代表读取、2代表写入、1代表执行
- 有经验的管理员通常使用数值权限,因为它们的输入比较短
- 下图说明了系统如何解释 644 八进制权限值
更改文件和目录的用户或组所有权
- 新文件由创建该文件的用户所有
- 只有 root 用户可以更改拥有文件的用户,组所有权可以由 root 用户或文件的所有者来设置,root 用户可将文件所有权授予任何组,而普通用户仅可将文件所有权授予他们所属的组
- 使用 chown (change owner)命令可更改文件所有权, -R 递归
[root@workstation ~]# mkdir Pictures
[root@workstation ~]# ls -l
total 0drwxr-xr-x. 2 root root 6 May 17 18:47 Pictures
[root@workstation ~]# chown student:wheel Pictures/
[root@workstation ~]# ls -l
total 0drwxr-xr-x. 2 student wheel 6 May 17 18:47 Pictures
管理默认权限和文件访问
特殊权限
特殊权限构成了除了基本用户、组和其他类型之外的第四种权限类型。顾名思义,这些权限提供了额外的访问相关功能,超出了基本权限类型允许的范畴。
特殊权限位浅析
权限 | 对文件的影响 | 对目录的影响 |
u+s(suid) | 以拥有文件的用户身份, | 对目录无影响 |
g+s(sgid) | 以拥有文件的组身份执行文件 | 在目录中最新创建的文件属于父目录属组 |
o+t (sticky) | 无影响 | 用户仅可以删除其文件,而无法删除或强制保存其他用户的文件 |
suid 示例:
ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 35504 Jul 16 2010 /usr/bin/passwd
sgid 示例:
ls -ld /run/log/journal
drwxr-sr-x. 3 root systemd-journal 60 May 18 09:15 /run/log/journal
sticky 示例:
ls -ld /tmp
drwxrwxrwt. 39 root root 4096 Feb 8 20:52 /tmp
设置特殊权限
用符号表示:setuid = u+s,setgid=g+s,sticky=o+t
[root@workstation ~]# mkdir example
[root@workstation ~]# chmod g+s example
[root@workstation ~]# ls -ld example
drwxr-sr-x. 2 root root 6 May 17 19:16 example
用数值法表示:setuid=4;setgid=2;sticky=1
[root@workstation ~]# mkdir exam
[root@workstation ~]# chmod 2770 exam
[root@workstation ~]# ls -ld exam
drwxrws---. 2 root root 6 May 17 19:17 exam
文件默认权限
- 创建新文件或目录时,会为其分配初始权限。有两个因素会影响这些初始权限。首先是创建常规文件还是目录。其次是当前的
- 如创建新目录,操作系统会为其分配权限 0777。如果是创建文件,操作系统会为其分配权限 0666
- shell 会话还会设置一个 umask,进一步限制初始设置的权限。这是一个八进制位掩码,用于清除由该进程创建的新文件和目录的权限。例如 umask 0002 可清楚其他用户的写入位。前导零表示特殊的用户和组权限未被清除。
- umask 示例:
[root@workstation ~]# su - student
Last login: Fri May 17 18:44:12 EDT 2024 on pts/0
[student@workstation ~]$ umask
0022
[student@workstation ~]$ touch abc
[student@workstation ~]$ ls -l abc
-rw-r--r--. 1 student student 0 May 17 19:20 abc
- root 用户可以通过在 /etc/profile.d 目录中添加 local-umask.sh 启动脚本来更改默认的 umask
- 用户可以在他们的.bash_profile 和.bashrc 文件中覆盖系统默认值.
[root@workstation ~]# cat /etc/profile.d/local-umask.sh
# Overrides default umask configuration asda sda
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 007
else
umask 022
fi
[root@workstation ~]# su - student
Last login: Fri May 17 19:20:28 EDT 2024 on pts/0
[student@workstation ~]$ umask
0007
[root@workstation ~]# useradd test
[root@workstation ~]# su - test
[test@workstation ~]$ umask
0007
END