概述
`su` 用于在当前会话中以其他用户的权限执行命令或切换到该用户的 shell 环境。默认情况下,如果不指定目标用户,它会尝试切换到 root 用户。
主要特点
- 用户 ID 切换:将当前用户的权限更改为其他用户的权限。
- 默认目标:如果不指定用户名,默认尝试切换到 root 用户。
- 密码认证:必须正确输入目标用户的密码才能进行权限切换。
- 环境切换:可以使用 `-` 或 `-l` 选项完全切换到目标用户的登录 shell 环境。
主要选项
`su` 命令可以通过各种选项来控制用户切换方式和要执行的命令。
用户切换选项
命令执行选项
生成的命令:
请尝试组合命令。
描述:
`su` 执行命令。
通过组合这些选项,您可以与 AI 一起虚拟地执行命令。
使用示例
通过 `su` 命令的各种用法,可以学习用户切换和执行特定命令的方法。
切换到 root 用户(非登录 shell)
su
默认切换到 root 用户,但不加载 root 的登录 shell 环境。当前用户的环境变量可能会部分保留。
切换到 root 用户的登录 shell
su -
切换到 root 用户,并完全加载 root 的登录 shell 环境(PATH、主目录等)。这是最常见且推荐的方式。
切换到特定用户的登录 shell
su -l username
切换到指定的 'username' 用户,并加载该用户的登录 shell 环境。
以 root 权限执行特定命令后返回
su -c "ls -la /root"
以 root 权限执行 `ls -la /root` 命令后,会自动返回到原始用户。shell 环境不会改变。
以其他用户身份执行特定命令后返回
su username -c "whoami"
以 'username' 用户的权限执行 `whoami` 命令后,返回到原始用户。
提示与注意事项
`su` 命令直接影响系统安全,使用时需要考虑一些重要事项。
安全与推荐事项
- root 密码暴露风险:`su` 直接要求输入 root 密码,如果该密码泄露,整个系统将面临风险。`sudo` 使用用户自己的密码,并且只能授予特定命令的权限,可以进行更精细的控制。通常更推荐使用 `sudo`。
- 推荐使用登录 shell:建议使用 `su -`(包含连字符)来完全加载目标用户的登录 shell 环境。这可以确保 PATH、环境变量等设置正确,防止意外问题,并与在目标用户环境中工作效果相同。
- 避免不必要的 root 使用:完成所需操作后,应立即使用 `exit` 命令返回到原始用户,这更安全。长时间以 root 权限工作可能会给系统带来风险。
- 日志检查:`su` 的使用记录会保存在系统日志中(例如 `/var/log/auth.log` 或 `/var/log/secure`)。为了安全审计,应定期检查这些日志。