答案1
要以 user2 身份使用,su user1
您需要在以标准用户身份执行此操作时输入 user1 的密码。但是,一个简单的解决方法是以 执行此操作root
,因为这样就不需要密码了。即:成为 root(使用sudo su
),然后 su 进入 user1(使用su user1
)。我不明白为什么您要 su 到 ubunut,而您已经是该用户(如屏幕截图所示),但这就是要走的路。
确保用户实际上是一个用户帐户,而不是系统(服务)帐户,例如mail
按照以下注释:sudo su user1
更快,并且还允许您使用一个而不是两个命令返回到用户2 exit
,因为您只需创建一个而不是两个登录shell。
答案2
首先要注意的是,使用su ubuntu
最终会使用当前用户的环境,而通常想要做的是使用目标用户的环境;所以这sudo - ubuntu
是要走的路。
但是,su
虽然没有足够的记录,但不允许以没有密码的用户身份登录这一事实可能只是的su
政策。
为了获得与 等效的功能su - ubuntu
,即以用户 ubuntu 身份进行的交互式登录 shell,人们可能会倾向于运行sudo su - ubuntu
,它不会提示输入密码;然而,这只是多余的,因为sudo
它本身就提供了这个功能;使用sudo su - ubuntu
以用户 ubuntu 身份获取交互式登录 shell 与运行脚本 A 完全相同,而脚本 A 又运行脚本 B,以便仅运行脚本 B。
因此,要以用户 ubuntu 身份运行交互式登录 shell,只需使用sudo
:
sudo -i -u ubuntu
[...] -i,--登录 运行目标用户密码指定的shell 数据库条目作为登录 shell。这意味着登录 特定资源文件(如 .profile 或 .login)将 由 shell 读取。如果指定了命令,则传递 通过 shell 的 -c 选项发送到 shell 执行。如果没有 指定命令后,将执行交互式 shell。sudo 尝试更改到该用户的主目录之前 运行 shell。该命令在环境中运行 类似于用户登录时收到的邮件。 sudoers(5) 手册中的命令环境部分 记录 -i 选项如何影响环境 当使用 sudoers 策略时运行命令。 [...] -u 用户, --user=用户 以默认目标用户以外的用户身份运行该命令 (通常是 root )。用户可以是用户名或 以“#”字符为前缀的数字用户 ID (UID)(例如 #0 代表 UID 0)。以 UID 运行命令时,许多 shell 要求使用反斜杠 ('\') 对 '#' 进行转义。有些 安全策略可能会将 UID 限制为 密码数据库。sudoers 策略允许以下 UID 不在密码数据库中,只要 targetpw 选项 未设置。其他安全策略可能不支持此功能。 [...]