在Linux系统中,变更用户是一项基础且重要的操作,无论是系统管理员进行日常维护,还是普通用户临时切换权限,都离不开这一功能,熟练掌握su和sudo等命令的正确使用方法,能够帮助用户更高效、安全地管理系统,本文将详细介绍Linux变更用户的常用命令、使用场景及注意事项。

su命令:切换用户身份
su(substitute user或switch user)是最基础的切换用户命令,允许当前用户切换至其他用户身份,默认情况下切换至root用户,其基本语法为su [选项] [用户名],其中常用选项包括:
-l或--login:以登录模式切换,会加载目标用户的环境变量,推荐优先使用;- 与
-l效果相同,可简写为su - 用户名; -c或--command:仅执行指定命令后立即返回原用户,适合临时执行特定操作;-s或--shell:指定目标用户的默认Shell程序。
普通用户test需切换至root用户时,可执行su - root,系统会提示输入root用户的密码;若仅以root身份执行ls /root命令,则可用su - root -c "ls /root",需要注意的是,su命令需要知道目标用户的密码,这在多用户协作环境中可能存在安全隐患,且root密码一旦泄露影响范围较大。
sudo命令:以其他用户身份执行命令
sudo(superuser do)允许授权用户以其他用户(通常是root)的身份执行命令,而无需知晓目标用户的密码,其核心优势在于权限的精细化管理,管理员可通过/etc/sudoers文件配置哪些用户可以执行哪些命令,避免直接暴露root密码。
sudo的基本语法为sudo [选项] [命令],常用选项包括:

-u或--user:指定以哪个用户身份执行命令,默认为root;-l或--list:列出当前用户可执行的sudo命令;-i或--login:以目标用户的登录Shell运行,会加载环境变量;-S:从标准输入读取密码,避免密码在终端历史中记录。
若用户test在/etc/sudoers中被授权执行所有命令,则可通过sudo ls /root以root身份查看root目录;若需临时切换至root用户环境,可执行sudo -i。sudo的日志记录功能(默认记录在/var/log/auth.log或/var/log/secure)也便于审计操作,提升系统安全性。
su与sudo的对比与选择
| 对比维度 | su命令 | sudo命令 |
|---|---|---|
| 密码验证 | 需输入目标用户密码 | 需输入当前用户自己的密码 |
| 环境加载 | 默认不加载目标用户环境(需加选项) | 可加载目标用户环境(加-i选项) |
| 权限控制 | 较粗放,可切换至任意用户 | 精细化控制,可指定命令和用户 |
| 安全性 | 需共享root密码,风险较高 | 无需暴露root密码,可追溯操作日志 |
| 适用场景 | 需长期以目标用户身份操作时 | 临时执行特权命令或精细化权限管理时 |
在实际应用中,若需频繁以管理员身份进行系统维护,建议优先使用sudo,通过配置/etc/sudoers文件实现最小权限原则;若需临时切换至其他普通用户(如服务账户),则可使用su - 用户名登录模式。
变更用户的注意事项
- 权限管理原则:遵循最小权限原则,避免非必要使用root权限,普通用户应通过
sudo执行特权命令,而非直接切换至root。 - 密码安全:
su命令需妥善保管目标用户密码,尤其是root密码;sudo密码通常为当前用户密码,且默认5分钟内有效,避免频繁输入。 - 环境变量差异:
su与sudo在不加登录选项时,可能无法加载目标用户的环境变量(如PATH、HOME等),导致命令执行异常,建议优先使用或-i选项。 - 审计与日志:重要服务器应开启
sudo日志记录,定期审计操作记录,及时发现异常行为;su操作也会记录在系统日志中,但可追溯性较弱。 - 配置文件修改:编辑
/etc/sudoers文件时,务必使用visudo命令,避免语法错误导致系统无法登录。
实践示例
假设用户developer需临时重启Nginx服务,且该用户已被授权执行systemctl restart nginx命令,操作步骤如下:
- 执行
sudo systemctl restart nginx,输入当前用户密码; - 若需查看重启状态,可通过
sudo systemctl status nginx确认; - 若需以root身份查看Nginx配置文件,可执行
sudo cat /etc/nginx/nginx.conf。
若管理员需临时切换至mysql用户维护数据库,则可执行su - mysql,加载该用户的环境变量后进行操作。

Linux变更用户操作是系统管理的核心技能之一,su和sudo命令各有适用场景,通过合理选择工具、严格遵循权限管理原则,并结合日志审计,可以在保障系统安全的前提下,高效完成用户切换和权限管理任务,对于初学者而言,理解两者的差异与安全特性,是提升Linux运维能力的重要基础。



















