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 授权时,通过已知密码切换用户执行操作(仅限信任环境)。
相关推荐
dust_and_stars12 小时前
APT vs Snap vs Flatpak 核心对比表
运维·服务器·数据库
未来之窗软件服务12 小时前
AI人工智能(四)本地部署vosk-ASR环境命令—东方仙盟练气期
linux·运维·人工智能·本地模型·仙盟创梦ide·东方仙盟
A懿轩A12 小时前
【Java 基础编程】Java 面向对象进阶:static/final、抽象类、接口、单例模式
java·开发语言·单例模式
lifallen12 小时前
后缀数组 (Suffix Array)
java·数据结构·算法
~央千澈~12 小时前
抖音弹幕游戏开发之第17集:添加日志系统·优雅草云桧·卓伊凡
linux·服务器·前端
AIMarketing12 小时前
飞猫M505G网速技术解析峰值1.6Gbps技术原理
运维·服务器·5g
逆境不可逃12 小时前
LeetCode 热题 100 之 76.最小覆盖子串
java·算法·leetcode·职场和发展·滑动窗口
I_LPL12 小时前
day35 代码随想录算法训练营 动态规划专题3
java·算法·动态规划·hot100·求职面试
百锦再13 小时前
Java中的日期时间API详解:从Date、Calendar到现代时间体系
java·开发语言·spring boot·struts·spring cloud·junit·kafka
overmind13 小时前
oeasy Python 116 用列表乱序shuffle来洗牌抓拍玩升级拖拉机
服务器·windows·python