“su”,当密码未知但您处于“无密码”的“wheel”状态时

“su”,当密码未知但您处于“无密码”的“wheel”状态时

我使用的是 FreeBsd 11。我有一个属于该组的用户“user123”车轮车轮%wheel ALL=(ALL) NOPASSWD: ALL/usr/local/etc/sudoers.

我不知道root的密码。不过,我可以在没有 sudo 的情况下运行“sudo”。

我已经安装了 Postgresql 并通过“服务启动”运行它。

现在我想以 postgresql 用户身份登录并创建数据库或其他内容:

$ su postgres
Password:


# or

$ su - postgres
Password:

但我不知道密码。

这是用户的密码root还是用户的密码postgres?我一个都不认识。对此有标准的解决方法吗?

答案1

如果您想以 登录,并且无需密码postgres即可访问,请执行以下操作:sudo

sudo -iu postgres

启动-i登录 shell。

答案2

警告:该问题表明您正在使用个人服务器。如果不是,并且您不是主管理员,请勿假设 root 用户的 shell,除非主管理员如此指示


sudoers:“轮组”设置

%wheel ALL=(ALL) NOPASSWD: ALL

所以你的用户123用户位于“轮组”中,并且您的苏多尔斯文件向wheel组的成员授予ALL跨域的不受限制的访问权限,作为命令(ALL)不需要密码的用户。ALL

我们知道您有一个有效的登录名,因此您的选择不受限制。知道密码postgres甚至,不是必需的。您可以简单地:

$ sudo -iu postgres


su、sudo、sudoers 混淆

  1. su = 替代用户
  2. sudo = 以另一个用户身份执行命令

您无法使用susu -如问题中所示“替换用户”的原因是因为 sudoers 文件对命令没有影响su

不带参数或仅短划线的命令su默认为,因此系统会提示您输入 root 用户密码。这是预期的行为:正如名称苏多尔斯意味着,sudoers 文件sudo仅向命令授予权限。


root shell,丢失密码

看来您忘记了 root 密码。您可以使用以下命令获取 root shell:

$ sudo -i

让您重新掌控:[root@local ~]#

答案3

两步:

$ sudo -i
# su - postgres

作为su,无需密码即可使用。您还可以将这些组合起来

$ sudo su - postgres

相关内容