> 软件包与系统管理 > su

su: 切换用户

`su` 命令是“substitute user”的缩写,用于将当前用户的 ID 切换为其他用户的 ID。它主要用于获取管理员权限(root)或在其他用户的环境中执行操作。通过密码认证获取权限,是一个对安全性至关重要的命令。

概述

`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`)。为了安全审计,应定期检查这些日志。

相同类别命令