我使用的是 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 混淆
- su = 替代用户
- sudo = 以另一个用户身份执行命令
您无法使用su
或su -
如问题中所示“替换用户”的原因是因为 sudoers 文件对命令没有影响su
。
不带参数或仅短划线的命令su
默认为根,因此系统会提示您输入 root 用户密码。这是预期的行为:正如名称苏多尔斯意味着,sudoers 文件sudo
仅向命令授予权限。
root shell,丢失密码
看来您忘记了 root 密码。您可以使用以下命令获取 root shell:
$ sudo -i
让您重新掌控:[root@local ~]#
答案3
两步:
$ sudo -i
# su - postgres
作为根su
,无需密码即可使用。您还可以将这些组合起来
$ sudo su - postgres