1. 访问权限的概念
当你在 Linux 中处理文件或目录时,可能需要管理它们的访问权限。想象一下,你把自己的袜子放在大家都能看到的地方,现在家里的每个人都可以用它们!Linux 中的访问权限可以防止“未经授权使用袜子”(或者更重要的东西,比如你的脚本)。让我们开始了解吧。
Linux 中的每个文件(和目录)都有三组访问权限,它们决定了谁可以读取、写入或执行这些文件:
- 读取 (r): 允许查看文件内容或目录中的文件列表。
- 写入 (w): 允许修改文件内容或在目录中新建/删除文件。
- 执行 (x): 允许将文件作为程序执行(或进入某个目录)。
三层模型

每个权限适用于三组用户:
- 所有者 (owner): 创建文件的人。
- 组 (group): 被分配到文件的组中的用户。
- 其他人 (others): 系统中剩余的所有用户。
文件的访问权限示例:
-rwxr-xr--
解析如下:
- 第一个字符
-表示这是一个文件(目录的话是d)。 - 前三个字符
rwx— 所有者的权限(读取、写入、执行)。 - 接下来的三个字符
r-x— 组的权限(读取、执行)。 - 最后三个字符
r--— 其他人的权限(只读)。
2. 命令 chmod:管理访问权限
符号格式表示法
命令chmod修改文件和目录的访问权限。符号格式表示法如下:
chmod [谁][操作][权限] 文件名
- 谁:
u(拥有者),g(组),o(其他人),a(所有人)。 - 操作:
+(增加权限),-(移除权限),=(精确设置权限)。 - 权限:
r(读取),w(写入),x(执行)。
例子:
# 给所有人设置执行权限
chmod a+x script.sh
# 只给组添加写入权限
chmod g+w file.txt
# 移除其他人的读取权限
chmod o-r document.txt
八进制格式表示法

八进制格式(或称数字格式)更紧凑,但需要理解“数字魔法”。在这种格式中,每种权限组合表示为一个数字:
r = 4w = 2x = 1
权限叠加计算:
rwx = 7(4 + 2 + 1)rw- = 6(4 + 2)r-- = 4
格式书写方式:
chmod [数字][数字][数字] 文件名
例子:
# 设置拥有者rwx权限,组r-x权限,其他人r--权限
chmod 754 file.sh
3. 更改文件所有者:命令 chown
如果你需要将文件交给其他用户(或组),chown 命令可以帮上忙。
格式:
chown [用户]:[组] 文件名
示例:
# 转让所有权给用户 user1
chown user1 myfile.txt
# 转让所有者和组
chown user1:group1 myfile.txt
# 仅更改组
chown :group2 myfile.txt
4. 默认掩码: umask
当你创建一个文件时,它的访问权限是由系统决定的。例如,权限可能是rw-r--r--。但这些权限从哪来的呢?答案是: 来自命令umask。
什么是umask?
umask定义了哪些权限不会被设置给新创建的文件。
例如:
- 文件的基本权限:
666(无执行权限)。 - 掩码:
022。 - 最终权限:
644(666 - 022)。
命令:
- 查看当前掩码:
umask - 设置新掩码:
umask 0022
示例:
# 设置掩码,使新文件具有 rw-rw-r--
umask 0002
5. 管理员权限和 sudo
什么是 sudo?
sudo("superuser do" 的缩写)是 Linux 和类似 Unix 系统中的一个命令,允许用户以 超级用户(root)或具有更高权限的用户身份执行命令。
sudo 系统提供了一个临时访问管理员功能的方式,无需一直以 root 账户工作,从而降低了意外或恶意更改系统的风险。
简单来说,sudo 就是写在需要用管理员权限执行的命令前面。

sudo 是如何工作的?
执行命令:
当你输入带 sudo 的命令时,系统会检查你的用户是否有使用高权限执行命令的权利。
例如:
sudo apt update
认证:
在当前会话中首次使用 sudo 时,系统会要求输入当前用户的密码(不是 root 的密码)。
成功输入密码后,系统会在短时间内(通常是 5-15 分钟)记住认证状态,避免每次都需要输入密码。
执行命令:
如果用户拥有配置文件 sudo 中指定的权限,该命令将以超级用户的权限执行。
sudo 的主要功能和命令
以权限运行命令:
sudo <命令>
例如:
sudo apt install nginx
以其他用户身份运行命令: 使用标志 -u:
sudo -u <用户名> <命令>
例如:
sudo -u user1 ls /home/user1
获取管理员终端: 启动 root 权限的 shell:
sudo -i
或者:
sudo su
查看 sudo 配置:
sudo -l
显示当前用户可以执行的命令。
编辑 sudo 配置:
sudo visudo
此命令会打开 /etc/sudoers 配置文件,提供一个安全的编辑环境。
6. 示例
来试着在实践中应用我们的知识。
任务 1: 使用 chmod 管理权限
创建一个文件:
touch myfile.txt为拥有者设置读取、写入和执行权限:
chmod u+rwx myfile.txt为其他人仅添加读取权限:
chmod o+r myfile.txt检查权限:
ls -l myfile.txt
任务 2: 使用 chown 更改文件拥有者
创建一个文件:
touch ownedfile.txt将拥有者更改为用户
user1(需要管理员权限):sudo chown user1 ownedfile.txt检查更改:
ls -l ownedfile.txt
任务 3: 使用 umask 的实验
检查当前的掩码:
umask设置掩码为
027:umask 027创建一个新文件:
touch newfile.txt检查新文件的权限:
ls -l newfile.txt
7. 常见错误和特点
- 忘记在更改所有者时使用
sudo: 只有管理员可以更改文件的所有者。如果你收到 "Operation not permitted" 错误,试试加上sudo。 chmod命令顺序错误: 改了错误的对象权限。确保你选择了正确的文件或目录。umask只影响新文件: 如果你试图用umask更改已有文件的权限,是行不通的。请用chmod。
你知道吗,Linux 中的权限非常灵活,你甚至可以创建一个文件,只有全宇宙中唯一一个人可以看到它?俗话说,权利越大,责任越大!现在,掌握了 chmod, chown 和 umask,你已经准备好让你的 Linux 系统不仅方便,还超级安全啦。
GO TO FULL VERSION