一、Linux 权限的核心概念
1.1 两种用户:超级用户与普通用户
超级用户与普通用户的权限差距极大。
- 超级用户:可以在 Linux 系统下做任何事情,不受限制。命令提示符是
#。 - 普通用户:在 Linux 下做有限的事情。命令提示符是 。
Linux 权限管理涉及用户角色、文件类型及访问控制。核心包括超级用户与普通用户的区别,所有者、组及其他三类访问者。权限分为读、写、执行,通过字符或八进制表达。实践层面掌握 chmod 修改权限、chown/chgrp 修改属主属组,以及 file 命令识别文件类型和 sudo 提权机制,确保系统安全与操作灵活。

超级用户与普通用户的权限差距极大。
#。$命令:
su [用户名]功能:切换用户。
su: 省略目标用户时,默认尝试切换到 root(根用户),仅切换身份,不加载 root 的环境变量。
lisi@hcss-ecs-1cde:/root$ su
Password: root@hcss-ecs-1cde:~#
su -: 切换到指定用户并加载其完整环境。
lisi@hcss-ecs-1cde:/root$ su -
Password: root@hcss-ecs-1cde:~#
因为 root 权限,无需密码。
root@hcss-ecs-1cde:~# su lisi
lisi@hcss-ecs-1cde:/root$
| 对比维度 | su(切换到 root) | su - / su - root(切换到 root) |
|---|---|---|
| 环境变量加载 | 仅切换用户身份,保留原用户的环境变量(如 PATH、HOME、PWD 等),仅 UID/EUID 变为 root | 完全加载 root 用户的环境变量(读取 /root/.bash_profile/.bashrc 等配置),等同于直接登录 root |
| 当前工作目录 | 保持切换前的目录(如原在 /home/lisi,切换后仍在此) | 切换到 root 的家目录(/root) |
| 命令搜索路径(PATH) | 沿用原用户的 PATH(可能缺少 root 专属命令路径,如 /sbin/usr/sbin) | 使用 root 的 PATH(包含 /sbin/usr/sbin 等系统管理命令路径) |
| 配置文件执行 | 不执行 root 的登录脚本(.bash_profile/.profile) | 执行 root 的登录脚本,加载 root 专属配置 |
| 本质含义 | '切换用户身份,但不切换环境' | '切换用户身份并完全切换到目标用户的登录环境' |
| 权限操作兼容性 | 可能因环境变量问题,部分 root 命令执行失败(如 systemctl/fdisk) | 所有 root 命令均可正常执行,无环境兼容问题 |
| 使用场景 | 临时执行单个 root 命令,且需保留原目录 / 环境 | 长期以 root 身份操作(如系统配置、权限管理),推荐优先使用 |
示例:
drwxr-xr-x 2 root root 4096 Dec 11 10:15 dir
如上面的代码,第一个 root 就是所有者 (user),第二个 root 就是所属组,不是前面两个 (未匹配上) 就是 others。
示例:
-rw-r--r-- 1 root root 20901 Dec 10 21:21 temp.txt
读写执行的顺序:
如,使用其他身份进行写入失败:
lisi@hcss-ecs-1cde:/root$ echo 'qqq' > temp.txt
bash: temp.txt: Permission denied
精确每个权限。
格式:chmod [访问者][±=][权限] 文件名,其中:
+:增加权限,-:删除权限,=:强制设置权限;u(所有者)、g(所属组)、o(其他用户)、a(所有用户)。以下面为例:
-rw-r--r-- 1 root root 0 Dec 9 22:50 text.txt
一次设置好所有。
格式:chmod 数字权限 文件名。
我们发现,上面每个组对应的每个权限都是二态的,不是有就是无,那不就是二进制中的 1/0 吗,三个组成一组,范围为 0~7,所以使用 8 进制表示。
依旧以为例:
-rw-r--r-- 1 root root 0 Dec 9 22:50 text.txt
| 对比维度 | 字符表达式 | 八进制表达式 |
|---|---|---|
| 表示形式 | 由 u/g/o(所有者 / 组 / 其他)+ r/w/x(读 / 写 / 执行)组成,如 rwxr-xr-- | 由 3 位八进制数字组成,每一位对应 u/g/o 的权限,如 754 |
| 权限对应逻辑 | 按'所有者、组、其他'分 3 段,每段用 r/w/x 的组合表示具体权限 | 每一位数字由 r(4)、w(2)、x(1) 的数值相加得到 |
| 可读性 | 直观体现各角色的权限类型,易理解具体权限分配 | 更简洁,适合快速输入 / 批量设置权限 |
| 常用权限场景 | 文件默认权限(如 rw-r--r--)、目录默认权限(如 rwxr-xr-x) | 快速设置权限(如 chmod 777 文件名)、脚本 / 程序的执行权限(如 chmod 755 脚本.sh) |
| chmod 命令用法 | chmod u+x,g-w 文件名(精准修改某类角色的权限) | chmod 640 文件名(一次性设置所有角色的权限) |
功能:设置文件的访问权限。
格式:chmod [参数] 权限 文件名。
常用选项:
示例:
chown (root 或者文件用户组)
功能:修改文件的拥有者。
格式:chown [参数] 用户名 文件名。
chgrp (root 或者文件用户组)
功能:修改文件或目录的所属组。
格式:chgrp [参数] 用户组名 文件名。
常用选项:
chmod 是自己修改用户组、所属组、其他对自己的访问权限,chown 与 chgrp 是修改自己用户组、所属组和其他是什么。
示例:
# 1. root 将 hello.txt 的所有者改为 zpw(普通用户无此权限)
[root@bite-alicloud ~]$ chown zpw hello.txt
[root@bite-alicloud ~]$ ls -l hello.txt
-rw------- 1 zpw whb 29 Oct 22 20:56 hello.txt
# 所有者从 whb 变为 zpw
# 2. 普通用户 whb 直接修改(无 sudo,导致权限不足,报错)
[whb@bite-alicloud ~]$ chown whb hello.txt
chown: changing ownership of 'hello.txt': Operation not permitted
# 3. 普通用户 whb 用 sudo 修改 hello.txt 的所有者为 litao(需输入 whb 自己的密码,且 whb 已在 sudoers 配置中)
[whb@bite-alicloud ~]$ sudo chown litao hello.txt
[sudo] password for whb:
# 输入 whb 的密码
[whb@bite-alicloud ~]$ ls -l hello.txt
-rw------- 1 litao zhangsan 29 Oct 22 20:56 hello.txt
# 所有者从 zpw 变为 litao
# 4. 修改 hello.txt 的所属组为 zhangsan(需 root 或所有者)
[root@bite-alicloud ~]$ chgrp zhangsan hello.txt
[root@bite-alicloud ~]$ ls -l hello.txt
-rw------- 1 zpw zhangsan 29 Oct 22 20:56 hello.txt
# 所属组从 whb 变为 zhangsan
# 5. 假设 whb 是 hello.txt 的所有者,且属于 zhangsan 组(主组或附加组)
[whb@bite-alicloud ~]$ chgrp zhangsan hello.txt
[whb@bite-alicloud ~]$ ls -l hello.txt
-rw-rw-r-- 1 whb zhangsan 29 Oct 22 20:56 hello.txt
# 所属组从原组变为 zhangsan
# 6. 普通用户 whb(此时他不是文件的所有者,且目标组不在自身组列表中) 用 sudo 修改 hello.txt 的所属组为 whb 组
[whb@bite-alicloud ~]$ sudo chgrp whb hello.txt
[whb@bite-alicloud ~]$ ls -l hello.txt
-rw------- 1 litao whb 29 Oct 22 20:56 hello.txt
# 所属组从 zhangsan 变为 whb
| 维度 | chown | chgrp | chmod |
|---|---|---|---|
| 核心作用 | 修改文件 / 目录的所有者(User) | 修改文件 / 目录的所属组(Group) | 修改文件 / 目录的访问权限(读 / 写 / 执行) |
| 修改对象 | 所有者(用户名 / UID) | 所属组(组名 / GID) | 权限位(r/w/x),分三类身份:① 所有者(u)② 所属组(g)③ 其他人(o) |
| 关键语法示例 | chown user1 file(改所有者)chown user1:group1 file(改所有者 + 组) | chgrp group1 file(改所属组)chgrp -R group2 dir(递归改目录) | chmod 755 file(数字权限)chmod u+x,g-w file(符号权限) |
| ls -l 对应位置 | 第 3 列(如 root) | 第 4 列(如 root) | 第 1 列(如 -rw-r--r--) |
| 权限要求 | 仅 root/sudo 可修改所有者;普通用户仅能改自己文件的所属组 | 同 chown(改所属组) | 文件所有者 /root 可修改 |
| 核心场景 | 移交文件所有权(如部署程序时改属主为服务用户) | 批量授权用户组访问文件 | 控制不同用户对文件的操作权限(如让脚本可执行、禁止其他人写文件) |
other 并不需要单独修改,因为 chown 与 chgrp 进行了修改了,other 也会跟着修改。
删除目录里的文件,不需要有文件的写权限,只需要有目录的写权限 (非 root) 即可。
功能说明:辨识文件类型。
语法:file [选项] 文件或目录...
常用选项:
-c:详细显示指令执行过程,便于排错或分析程序执行的情形。-z:尝试去解读压缩文件的内容。/etc/sudoers 文件分配文件。
格式:接受权限的用户登陆的主机 =(执行命令的用户)命令掌握 root 与普通用户的关系与权限,以及修改权限和修改角色的指令,使项目开发可以灵活进行。通过合理配置 chmod、chown、chgrp 等命令,可以有效保障系统安全,实现精细化的权限控制。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online