su #
su
(substitute user)命令用于切换当前用户身份到另一个用户,通常是超级用户(root)。它允许用户在不注销当前会话的情况下,临时获取其他用户的权限。
语法 #
su [选项] [用户名]
如果不指定用户名,默认切换到 root 用户。
选项 #
选项 | 描述 |
---|---|
- , -l , --login |
提供类似于该用户直接登录的环境,包括加载用户的环境变量和切换到用户的主目录 |
-c , --command=<命令> |
执行单个命令后退出 |
-s , --shell=<shell> |
指定要使用的 shell |
-p , --preserve-environment |
保留当前环境变量 |
-m , -P |
不重置环境变量(与 -p 相同) |
--help |
显示帮助信息 |
--version |
显示版本信息 |
示例 #
- 切换到 root 用户:
su
系统会提示输入 root 用户的密码。
- 使用登录环境切换到 root 用户:
su -
或
su -l
这会加载 root 用户的环境变量,并切换到 root 用户的主目录。
- 切换到指定用户:
su username
系统会提示输入指定用户的密码。
- 使用登录环境切换到指定用户:
su - username
- 以 root 身份执行单个命令:
su -c "apt update"
- 以指定用户身份执行单个命令:
su username -c "ls -la /home/username"
- 使用指定的 shell:
su -s /bin/bash username
注意事项 #
- 使用
su
命令需要知道目标用户的密码。 - 使用
su -
比单独使用su
更安全,因为它会完全重置环境变量。 - 在多用户系统中,通常推荐使用
sudo
命令而不是su
,因为sudo
提供了更细粒度的权限控制和更好的审计功能。