su

su #

su(substitute user)命令用于切换当前用户身份到另一个用户,通常是超级用户(root)。它允许用户在不注销当前会话的情况下,临时获取其他用户的权限。

语法 #

su [选项] [用户名]

如果不指定用户名,默认切换到 root 用户。

选项 #

选项 描述
-, -l, --login 提供类似于该用户直接登录的环境,包括加载用户的环境变量和切换到用户的主目录
-c, --command=<命令> 执行单个命令后退出
-s, --shell=<shell> 指定要使用的 shell
-p, --preserve-environment 保留当前环境变量
-m, -P 不重置环境变量(与 -p 相同)
--help 显示帮助信息
--version 显示版本信息

示例 #

  1. 切换到 root 用户:
su

系统会提示输入 root 用户的密码。

  1. 使用登录环境切换到 root 用户:
su -

su -l

这会加载 root 用户的环境变量,并切换到 root 用户的主目录。

  1. 切换到指定用户:
su username

系统会提示输入指定用户的密码。

  1. 使用登录环境切换到指定用户:
su - username
  1. 以 root 身份执行单个命令:
su -c "apt update"
  1. 以指定用户身份执行单个命令:
su username -c "ls -la /home/username"
  1. 使用指定的 shell:
su -s /bin/bash username

注意事项 #

  • 使用 su 命令需要知道目标用户的密码。
  • 使用 su - 比单独使用 su 更安全,因为它会完全重置环境变量。
  • 在多用户系统中,通常推荐使用 sudo 命令而不是 su,因为 sudo 提供了更细粒度的权限控制和更好的审计功能。

相关命令 #

  • sudo - 以其他用户身份执行命令
  • passwd - 更改用户密码
  • whoami - 显示当前用户名
  • id - 显示用户和组信息