Linux提权与文件权限|su/sudo详解+文件目录权限
Linux提权管理与文件权限实战笔记(CentOS7)
摘要:本文讲解Linux su、sudo提权操作,区分登录shell与非登录shell,详解sudoers配置、免密授权、日志审计;同时梳理文件目录rwx权限、chmod数字/符号授权方式,附带常用命令权限对照表。
一、提权管理 su
su用于切换用户身份,区分登录shell与非登录shell,环境变量加载行为不一样。
su 切换用户
# su 用户名:非登录shell,继承当前终端环境变量,不加载目标用户配置
su root
# su -l 用户名(等价 su - 用户名):登录shell,完整加载目标用户的环境配置
su -l root
# 不加用户名,默认切换root
su
# 登录shell示例,-bash
[zjx@localhost dir1 17:07:43]$ su -l root
密码:
[root@localhost ~ 17:07:53]# echo $0
-bash
# 非登录shell示例,bash
[zjx@localhost dir1 16:19:37]$ su root
密码:
[root@localhost dir1 17:06:58]# echo $0
bash
⚠️踩坑:
su root非登录shell,部分环境变量不会加载,容易出现命令找不到问题;生产切换root优先使用su - root。
su -c 临时执行一条命令
切换到指定用户,仅执行单条命令,执行完成立刻退回原用户,不会进入对方交互shell。
命令必须使用引号包裹。
# 格式:su 用户名 -c '命令'
[zz@localhost ~ 17:21:49]$ su -c 'echo abc >> /etc/passwd'
密码:
[zz@localhost ~ 17:30:32]$
su‑c 与 sudo 对比
| 命令 | 需要密码 | 特点 |
|---|---|---|
su - root -c "cmd" | 目标用户密码(root密码) | 临时执行一条命令,需要知道root密码 |
sudo cmd | 当前普通用户自己的密码 | 无需知道root密码,依靠/etc/sudoers做授权配置 |
二、sudo提权
sudo:普通用户临时以其他用户(通常root)身份执行命令,执行完立刻回到普通用户环境。
- 输入自己账号的密码,不是root密码
- 所有sudo操作会记录审计日志:
/var/log/secure
# 基础语法
sudo [-u 用户名] 命令
# 示例:以root执行命令
sudo head /etc/shadow
# 示例:以zjx用户身份执行命令
sudo -u zjx ls /home/zjx
sudo配置
方式1:visudo 修改主配置文件(不推荐直接改)
visudo会做语法校验,不要直接vi编辑
/etc/sudoers,写错会导致sudo直接崩溃。
visudo
配置片段
#用户配置
root ALL=(ALL) ALL
#用户名 主机=(可切换身份) 允许执行命令
#组配置,%代表组,把用户加入wheel组即可获得sudo权限
%wheel ALL=(ALL) ALL
方式2:/etc/sudoers.d 下放自定义配置(推荐)
在
/etc/sudoers.d/新建独立配置文件,不要修改主配置,便于维护。
#查看自定义配置文件
ls /etc/sudoers.d
#配置示例 zjx文件
cat /etc/sudoers.d/zjx
zjx ALL=(ALL) NOPASSWD:/bin/cat
# NOPASSWD:执行sudo cat不需要输入密码,仅授权cat命令
⚠️踩坑:下放的配置文件语法错误会造成sudo全部失效,写完建议用
visudo -c校验语法。
sudo日志审计
所有sudo操作日志保存在
/var/log/secure
#过滤sudo相关日志
grep sudo /var/log/secure
日志示例:
Sep 9 10:31:18 localhost sudo: zjx : user NOT in sudoers ; TTY=pts/0 ; PWD=/home/zjx ; USER=root ; COMMAND=/bin/head /etc/shadow
Sep 9 10:33:36 localhost sudo: zjx : TTY=pts/0 ; PWD=/home/zjx ; USER=root ; COMMAND=/bin/head /etc/shadow
Sep 9 10:33:36 localhost sudo: pam_unix(sudo:session): session opened for user root by zjx(uid=0)
Sep 9 10:33:36 localhost sudo: pam_unix(sudo:session): session closed for user root
三、文件权限管理
什么是文件权限
Linux 是一个多用户多任务操作系统,同一台机器上可能同时存在多个用户。文件权限(File Permission)就是操作系统用来控制"谁能读、谁能写、谁能执行"某个文件或目录的一套规则,是 Linux 安全模型的核心基础。
如果没有文件权限管理,任何用户都能随意读取、修改甚至删除他人的文件,系统将毫无安全性可言。因此,理解并掌握文件权限,是 Linux 运维和开发的基本功。
为什么需要文件权限
- 保护隐私:防止其他用户读取你的私人文件(如密钥、配置文件)。
- 防止误操作:避免普通用户误删或篡改系统关键文件。
- 权限最小化:只给用户完成任务所需的最小权限,降低安全风险。
- 审计追踪:配合属主、属组信息,可以追踪文件归属与操作来源。
权限的核心三要素
Linux 文件权限围绕三个维度展开:
| 维度 | 说明 |
|---|---|
| 属主(u) | 文件的所有者,通常是创建者 |
| 属组(g) | 文件所属的用户组,组内成员共享权限 |
| 其他用户(o) | 既不是属主、也不属于属组的其他所有人 |
每个文件都同时记录这三类用户各自的
rwx权限,共同决定谁能对该文件做什么操作。
权限位介绍
第一位:文件类型
- 普通文件
d 目录
l 软链接
第2‑4位 u(属主用户权限)
第5‑7位 g(属组权限)
第8‑10位 o(其他用户权限)
权限优先级:属主用户权限 > 属组权限 > 其他用户权限
rwx含义
| 符号 | 含义 | 文件作用 | 目录作用 |
|---|---|---|---|
| r | 读 | 读取文件内容 | 列出目录内文件名 |
| w | 写 | 修改、覆盖文件内容 | 在目录创建、删除文件 |
| x | 执行 | 可以运行程序脚本 | 可以进入(cd)该目录 |
权限两种表示方式
- 数字八进制表示
- r = 4
- w = 2
- x = 1
- 符号表示
u属主用户g属组o其他用户
chmod 修改权限
#数字法
chmod 755 zjx.txt
#符号法
chmod u+r zjx.txt # 属主增加读权限
chmod g-w test.txt # 去掉属组写权限
chmod o=r test.txt # 设置其他用户只有读权限
✅面试高频注意点
- 文件:设置w权限建议搭配r;设置x权限建议搭配r
- 目录:设置r权限必须搭配x;设置w权限必须搭配rx
Linux常用命令权限汇总表
| 命令 | 源目录权限 | 源文件权限 | 目标目录权限 | 简要说明 |
|---|---|---|---|---|
| cd | x | — | — | 进入目录,仅需要目录x权限 |
| ls | r | — | — | 列出目录文件名 |
| ls -l | rx | — | — | 查看文件详细属性 |
| mkdir | wx(父目录) | — | — | 父目录下创建目录 |
| rmdir | wx(父目录) | — | — | 删除空目录 |
| cat / head / more | x | r | — | 读取文件内容 |
| mv | wx(父目录) | NONE | wx | 移动文件,文件本身不需要权限 |
| cp | r | r | wx | 复制文件 |
| touch | wx(父目录) | w | — | 创建/刷新时间戳 |
| rm | wx(父目录) | NONE | — | 删除文件,只看父目录权限 |
| chmod | x | 属主/root | — | 修改文件权限 |
| chown | x | root | — | 修改属主属组 |
| vi编辑已有文件 | x | w | — | 修改文件内容 |
避坑总结
su root是非登录shell,环境不全;切换root优先su - root。su -c需要目标用户密码,sudo只需要自己的密码。- 修改sudo配置优先放到
/etc/sudoers.d/目录,不要直接改主文件,修改后做语法校验。 - sudo审计日志位置:
/var/log/secure,排查sudo权限报错优先看该日志。 - 目录权限:r必须配合x,w必须配合rx;删除文件看父目录权限,不看文件本身权限。
学习笔记小结【面试速记】
su不带‑:非登录shell,继承当前环境;带‑ / -l:登录shell,加载目标用户完整环境。su -c临时执行命令需要目标账号密码;sudo依靠sudoers授权,输入自身密码。- visudo编辑sudo配置;自定义配置放在
/etc/sudoers.d/下;%wheel代表wheel用户组。 - 文件权限优先级:u>g>o;r=4,w=2,x=1。
- 删除文件的权限看父目录w权限,和被删文件本身权限无关。
`
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐



所有评论(0)