Linux su 命令核心用法总结

Linux su 命令核心用法总结

一、su 命令核心作用

susubstitute user (切换用户)或 switch user 的缩写,核心作用是完全切换到另一个用户的身份(默认切换到 root),获得该用户的所有权限,进入其专属的命令行环境(加载目标用户的环境变量、配置文件等)。

简单来说:su 是 "完整切换用户",切换后从头到尾都以目标用户身份操作,直到主动退出;而 sudo 是 "临时借用权限",仅单条 / 短期命令提权。

二、核心特性

  1. 权限完全切换:切换后获得目标用户的所有权限(无任何命令限制),等同于直接用该用户登录;
  2. 密码验证要求 :需输入目标用户的密码 (而非当前用户密码),例如 su root 需输入 root 密码,su alice 需输入 alice 密码;
  3. 环境变量加载
  • 默认 su:仅切换用户身份,保留当前用户的环境变量(如 PATHHOME);
  • - 选项(su -):完整切换环境,加载目标用户的所有环境变量和配置文件(推荐用法);
  1. 无操作审计 :默认情况下,su 切换后的操作不会单独记录(需额外配置日志),无法精准追溯操作人;
  2. 无需提前授权 :只要知道目标用户密码,任何用户均可尝试 su 切换(无配置文件限制,仅依赖密码验证)。

三、常用基础用法

1. 切换到 root 用户(默认行为)

复制代码
\# 方式1:仅切换身份,保留当前环境变量

su

\# 方式2:完整切换环境(推荐),等同于 root 直接登录

su -

\# 方式3:简写形式(同 su -)

su - root

\# 退出 root,返回原用户

exit

2. 切换到指定普通用户

格式:su [选项] 目标用户名

复制代码
\# 切换到用户 alice,保留当前环境

su alice

\# 完整切换到 alice 的环境(加载其 .bashrc 等配置)

su - alice

\# 退出 alice,返回原用户

exit

3. 仅执行单条目标用户命令(不切换终端)

格式:su - 目标用户 -c "命令"-c 表示执行单次命令)

复制代码
\# 以 root 身份执行单次查看系统日志命令,执行后返回原用户

su - root -c "cat /var/log/secure"

\# 以 alice 身份执行单次创建文件命令

su - alice -c "touch /home/alice/test.txt"

四、与 sudo 命令的核心差异(补充对比)

特性 su sudo
核心逻辑 完整切换用户身份 临时借用目标用户权限
密码要求 输入「目标用户密码」 输入「当前用户密码」(需授权)
权限范围 目标用户的所有权限 仅授权的指定命令
环境变量 可选择是否加载目标环境 默认保留当前用户环境(sudo -i 加载 root 环境)
操作审计 无默认日志,需额外配置 自动记录到系统日志(可追溯)
安全风险 高(密码泄露即全权限泄露) 低(精细化授权 + 审计)
配置依赖 无需配置,仅依赖密码 依赖 /etc/sudoers 授权
适用场景 临时需要长期使用目标用户权限 日常单条 / 多条高权限操作(推荐)

五、重要注意事项

  1. 生产环境慎用 su切换 root

    由于 su 无细粒度权限控制,且依赖 root 密码(多人共用易泄露),风险极高,建议生产环境禁用普通用户 su 切换 root(可通过 sudoers 配置限制);

  2. 优先使用 su -而非 su

    su - 会加载目标用户的完整环境(如 PATHHOME),避免因环境变量不一致导致命令执行异常(例如 su 切换 root 后,可能无法使用 sudo 等命令);

  3. su切换后注意权限边界

    切换到 root 后拥有系统最高权限,误操作(如 rm -rf /)会直接导致系统崩溃,需格外谨慎;

  4. 忘记 root 密码时无法用 su重置

    若 root 密码丢失,su root 无法执行(需输入 root 密码),此时需通过 sudo passwd root 重置(前提是当前用户有 sudo 授权)。

六、常见使用场景

  1. 临时需要长期操作 root 权限(非生产环境,如本地测试机);
  2. 切换到普通用户排查其专属权限问题(如用户目录权限、配置文件问题);
  3. 无 sudo 授权时,通过已知密码切换用户执行操作(仅限信任环境)。
相关推荐
一袋米扛几楼9827 分钟前
【密码学】CrypTool2 工具是什么?
服务器·网络·密码学
曹牧1 小时前
BeanUtils.copyProperties‌
java
QWQ___qwq1 小时前
Java线程安全深度总结:基本类型与引用类型的本质区别
java·安全·面试
识君啊2 小时前
Java异常处理:中小厂面试通关指南
java·开发语言·面试·异常处理·exception·中小厂
林姜泽樾3 小时前
Linux入门第十二章,创建用户、用户组、主组附加组等相关知识详解
linux·运维·服务器·centos
月月玩代码4 小时前
Actuator,Spring Boot应用监控与管理端点!
java·spring boot·后端
xiaokangzhe4 小时前
Linux系统安全
linux·运维·系统安全
feng一样的男子4 小时前
NFS 扩展属性 (xattr) 提示操作不支持解决方案
linux·go
南棱笑笑生4 小时前
20260310在瑞芯微原厂RK3576的Android14查看系统休眠时间
服务器·网络·数据库·rockchip
阿珍爱上了阿强,在一个有星星的夜晚4 小时前
node后端页面性能监测分析
java·学习方法