对没有密码的用户使用 su

对没有密码的用户使用 su

我正在使用 Ubuntu 中的命令创建一个用户,useradd该命令不需要我为该用户设置密码。但是当我尝试使用命令以该用户身份登录,su 要求我输入密码并退出“身份验证失败”

您能否向我解释一下它的su工作原理以及如何以不输入密码的用户身份登录(例如 Amazon EC2 中的默认 Ubuntu 用户) 即使 Ubuntu 用户没有设置密码,su 也要求我输入密码

即使 ubuntu 用户没有设置密码,su 也要求我输入密码

答案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 

来自sudoTrusty 的手册页

[...]
     -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 选项
                 未设置。其他安全策略可能不支持此功能。
[...]

相关内容