在现代操作系统中,权限管理是保障安全与系统稳定运行的关键环节。Linux作为一个广泛应用的开源操作系统,其权限体系以灵活性、可扩展性和严谨性著称。无论是个人用户还是企业环境,理解并掌握Linux权限管理,既是保障信息安全的基础,也能大幅提升系统管理效率。本文将带你深入探索Linux权限体系的核心概念、常见操作以及最佳实践。
Linux下有两种用户:超级用户(root)、普通用户
命令:su [用户名]
功能:切换用户。
例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。退出用户使用 exit 或者 ctrl + d。
Linux 文件类型由文件的第一个字符标识,当使用命令 ls -l
查看文件列表时,可以看到类似如下的输出:
-rwxr-xr--
drwxr-xr-x
lrwxrwxrwx
第一个字符表示文件的类型,可能的取值如下:
字符 | 文件类型 |
---|---|
- | 普通文件 (Regular File) |
d | 目录 (Directory) |
l | 符号链接 (Symbolic Link) |
b | 块设备文件 (Block Device) |
c | 字符设备文件 (Character Device) |
p | 管道 (Pipe) |
s | 套接字 (Socket) |
Linux 文件权限分为三组:
权限有三种:
权限 | 描述 | 值 |
---|---|---|
r | 读 (Read) | 4 |
w | 写 (Write) | 2 |
x | 执行 (Execute) | 1 |
a. 符号表示法
用字母表示文件权限,例如:-rw-r--r--
字符 | 含义 |
---|---|
r | 读权限 |
w | 写权限 |
x | 执行权限 |
- | 没有该权限 |
例子:
-rw-r--r--
表示普通文件,所有者有读写权限,组用户和其他用户只有读权限。b. 数值表示法
每种权限的值相加表示最终权限。例如:
权限 | 数值 | 二进制 |
---|---|---|
--- | 0 | 000 |
--x | 1 | 001 |
-w- | 2 | 010 |
-wx | 3 | 011 |
r-- | 4 | 100 |
r-x | 5 | 101 |
rw- | 6 | 110 |
rwx | 7 | 111 |
权限分为三组(Owner, Group, Others),组合成三位数字。例如:
-rwxr-xr--
的数值表示为 754
。chmod
命令chmod
(Change Mode) 是用于修改 Linux 文件或目录权限的命令。权限可以用符号或八进制数表示。
基本语法
chmod [选项] 模式 文件名
u+r
, g-w
) 或数字表示法 (755
)。a. 符号表示法
符号表示法适合逐步修改权限:
chmod [ugoa][+-=][rwx] 文件名
符号 | 作用 |
---|---|
u | 文件所有者 (user) |
g | 文件所属组 (group) |
o | 其他人 (others) |
a | 所有用户 (all) |
+ | 添加权限 |
- | 移除权限 |
= | 直接设定权限 |
示例:
给文件所有者添加写权限:
chmod u+w filename
删除其他人的执行权限:
chmod o-x filename
所有用户设定只读权限:
chmod a=r filename
b. 数字表示法:
数字表示法直接设定文件权限值(例如 644
,755
)。
权限 | 数值 | 二进制 |
---|---|---|
--- | 0 | 000 |
--x | 1 | 001 |
-w- | 2 | 010 |
-wx | 3 | 011 |
r-- | 4 | 100 |
r-x | 5 | 101 |
rw- | 6 | 110 |
rwx | 7 | 111 |
设置文件权限为 rwxr-xr--
:
chmod 754 filename
设置目录权限为 rwx------
:
chmod 700 directory_name
常用选项
选项 | 描述 |
---|---|
-R | 递归修改权限,适用于目录及其所有子目录和文件。 |
-v | 显示每个文件权限修改的详细信息。 |
-c | 仅显示被更改的文件信息。 |
--reference=ref_file | 将 ref_file 的权限应用到目标文件。 |
示例:
递归修改目录及其内容的权限:
chmod -R 755 /path/to/directory
使用参考文件权限:
chmod --reference=ref_file target_file
chown
命令chown
(Change Ownership)用于更改文件或目录的所有者和/或所属组。
语法
chown [选项] [所有者][:组] 文件名
:
开头。常用选项
选项 | 描述 |
---|---|
-R | 递归更改目录及其内容的所有者和组。 |
-v | 显示更改的详细信息。 |
--reference=ref_file | 使用参考文件的所有者和组进行设置。 |
示例
更改文件所有者:
chown user1 filename
将 filename
的所有者改为 user1
。
更改所有者和组:
chown user1:group1 filename
将 filename
的所有者改为 user1
,所属组改为 group1
。
仅更改组:
chown :group1 filename
递归更改目录和文件的所有者:
chown -R user1:group1 /path/to/directory
参考其他文件的所有者和组:
chown --reference=ref_file target_file
chgrp
命令chgrp
(Change Group)用于更改文件或目录的所属组。
语法
chgrp [选项] [组] 文件名
常用选项
选项 | 描述 |
---|---|
-R | 递归更改目录及其内容的所属组。 |
-v | 显示更改的详细信息。 |
--reference=ref_file | 使用参考文件的组进行设置。 |
示例
更改文件的所属组:
chgrp group1 filename
将 filename
的所属组改为 group1
。
递归更改目录和文件的所属组:
chgrp -R group1 /path/to/directory
参考其他文件的组:
chgrp --reference=ref_file target_file
实际上:
666
(没有执行权限)。
777
(包括执行权限)。
但是:实际权限 = 默认权限 - umask
这里我们引入一个叫做umask的东西。
umask
(User File Creation Mask)是一个在 Linux 操作系统中用于控制文件和目录默认权限的命令。它定义了文件和目录创建时的权限掩码,从而决定新创建的文件或目录的最终权限。
实际权限 = 默认权限 - umask
注意:这里的 - 并不是简单的减,而是,默认权限 & (~umask)。
例如:
umask = 022
: 666 - 022 = 644
(rw-r–r–)777 - 022 = 755
(rwxr-xr-x)umask = 027
: 666 - 027 = 640
(rw-r-----)777 - 027 = 750
(rwxr-x–)示例:
更改 umask: 修改为 077
:
umask 077
touch test3.txt
mkdir dir3
运行命令:
umask
这将返回一个四位的八进制数字(前三位是有效的)。
例如:
$ umask
0022
在当前会话中临时更改:
umask 0027
此更改仅适用于当前 shell 会话。
注意事项
umask
只能限制权限,而不能授予额外权限。例如,设置 umask
为 0000
允许最大权限,但不能为文件自动添加执行权限。r
- Read)ls
命令)。w
- Write)x
- Execute)cd
命令)。解决方案:设置粘滞位
粘滞位(Sticky Bit)是一种特殊的权限位,用于保护目录下的文件和子目录,使得只有文件的所有者或者目录的所有者才能删除或修改该文件,即使其他用户对目录有写权限。
/tmp
目录。该目录通常对所有用户开放写入权限,但由于设置了粘滞位,用户只能删除或修改自己的文件,而不能影响其他用户的文件。符号模式:在文件或目录权限的符号表示中,粘滞位通常显示为目录权限的最后一位 t
或 T
。
t
。T
。 例如:drwxrwxrwt 10 root root 4096 Nov 19 /tmp
/tmp
目录的权限显示 t
,表示粘滞位已启用,且目录具有执行权限。
八进制模式:粘滞位对应的八进制值是 1
,可以通过在权限数字前加上 1
设置粘滞位。例如:
1755
:设置了粘滞位,并且目录权限为 rwxr-xr-x
。1777
:设置了粘滞位,并且目录权限为 rwxrwxrwx
(例如 /tmp
目录)。设置粘滞位
使用 chmod
命令为目录添加粘滞位:
chmod +t directory_name # 使用符号模式添加粘滞位。
chmod 1777 directory_name # 使用八进制模式设置权限并添加粘滞位。
移除粘滞位
chmod -t directory_name # 使用符号模式移除粘滞位。
chmod 0777 directory_name # 使用八进制模式移除粘滞位。
Linux权限体系是一个兼具严谨与灵活的设计,其核心在于平衡安全性与实用性。通过深入理解权限管理的原理和操作,你不仅能够应对常见的安全威胁,还能更高效地管理系统资源。希望本文能为你的学习和实践提供实用参考,让你在Linux系统的使用中更加自信、游刃有余。
今天的分享到这里就结束啦!如果觉得文章还不错的话,可以三连支持一下,17的主页还有很多有趣的文章,欢迎小伙伴们前去点评,您的支持就是17前进的动力!