Unix和Linux系统中的文件权限是系统安全的基础机制,它控制着用户对文件和目录的访问级别。权限系统基于三个基本组成部分:
每个文件或目录有三种基本权限:
读(r):
写(w):
执行(x):
使用字母表示权限,如 rwxr-xr--
:
- 前三位(rwx):所有者权限
- 中间三位(r-x):组权限
- 最后三位(r--):其他用户权限
- -
表示没有该权限
用三位八进制数表示权限: - 4 = 读(r) - 2 = 写(w) - 1 = 执行(x) - 0 = 无权限
将所需权限的数字相加: - 7 (4+2+1) = rwx - 6 (4+2+0) = rw- - 5 (4+0+1) = r-x - 4 (4+0+0) = r-- - 等等
例如 755
表示:
- 所有者:rwx (7)
- 组:r-x (5)
- 其他:r-x (5)
除了基本权限外,还有三个特殊权限位:
Set User ID (SUID) (s):
Set Group ID (SGID) (s):
Sticky Bit (t):
使用 ls -l
命令查看文件权限:
-rwxr-xr-- 1 user group 4096 Jan 1 10:00 file.txt
drwxr-xr-x 2 user group 4096 Jan 1 10:00 directory
第一个字符表示文件类型:
- -
普通文件
- d
目录
- l
符号链接
- 其他字符表示特殊文件类型
chmod:更改文件权限
chmod u+x file
(给所有者添加执行权限)chmod 755 file
(设置为rwxr-xr-x)chown:更改文件所有者
chown user:group file
(同时更改所有者和组)chown user file
(仅更改所有者)chgrp:更改文件所属组
chgrp group file
新创建文件的默认权限由umask值决定:
- umask
命令显示当前掩码
- umask 022
设置新掩码
- 实际权限 = 最大权限 & ~umask
例如umask为022时: - 文件默认权限:666 & ~022 = 644 (rw-r--r--) - 目录默认权限:777 & ~022 = 755 (rwxr-xr-x)
理解并正确设置文件权限是Linux系统管理的重要基础,也是系统安全的关键因素之一。