点击上方 网络技术干货圈,选择 设为星标
优质文章,及时送达
大家好,这里是网络技术干货圈。
本文,我们将展示如何在不需要密码的情况下切换到另一个或特定的用户帐户。
例如,我们有一个名为postgres的用户帐户(默认的PostgreSQL超级用户系统帐户),我们希望名为postgres的组中的每个用户(通常是我们的PostgreSQL数据库和系统管理员)使用命令切换到postgres帐户,而无需输入密码su
默认情况下,只有 root 用户可以在不输入密码的情况下切换到另一个用户帐户,任何其他用户将被提示输入他们要切换到的用户帐户的密码(或者如果他们使用sudo 命令,他们将被提示输入他们的密码),如果他们没有提供正确的密码,他们会得到“身份验证失败”错误,如下面的屏幕截图所示。
您可以使用下面提供的两种解决方案中的任何一种来解决上述问题。
1. 使用 PAM 认证模块
PAM(可插拔身份验证模块)是现代 Linux 操作系统上用户身份验证的核心。
想要允许特定组中的用户无需密码即可切换到另一个用户帐户,可以在/etc/pam.d/su
文件中修改su 命令的默认 PAM 设置。
# vim /etc/pam.d/su
复制
或者
$ sudo vim /etc/pam.d/su
复制
在“auth enough pam_rootok.so ”之后添加以下配置,如下所示。
auth [success=ignore default=1] pam_succeed_if.so user = postgres
auth sufficient pam_succeed_if.so use_uid user ingroup postgres复制
在上面的配置中,第一行检查目标用户是否是postgres,如果是,服务检查当前用户,否则default=1跳过该行并执行正常的认证步骤。
auth [success=ignore default=1] pam_succeed_if.so user = postgres
复制
接下来的行检查当前用户是否在组postgres 中,如果yes,则认为身份验证过程成功并返回足够的结果。否则,将执行正常的身份验证步骤。
auth sufficient pam_succeed_if.so use_uid user ingroup postgres
复制
保存文件并关闭它。
接着,添加用户(例如quanquan)到su该帐户的Postgres不使用密码组的Postgres使用usermod命令。
$sudo usermod -aG postgres quanquan
复制
现在尝试su的Postgres的帐户作为用户quanquan,你不应该被提示输入如下所示的密码:
$ su - postgres
复制
2. 使用 Sudoers 文件
您还可以通过在 sudoers 文件中进行一些更改而无需密码即可访问其他用户。
在这种情况下,将切换到另一个用户帐户(例如postgres)的用户(例如quanquan)应该在 sudoers 文件或 sudo 组中才能调用sudo 命令。
$ sudo visudo
复制
然后在该行下方添加以下配置“%sudo ALL=(ALL:ALL) ALL”,如下面的屏幕截图所示。
quanquan ALL=NOPASSWD: /bin/su – postgres
复制
保存并关闭文件。
现在尝试以quanquan用户身份登录postgressu帐户,shell 不应提示您输入密码:
$ sudo su - postgres
复制
好了,本文就到这边!有关更多信息,请参阅 PAM 手册条目页面 ( man pam.conf ) 以及sudo 命令( man sudo )。
$ man pam.conf
$ man sudo复制
如果你觉得本文对你有帮助,别忘了点赞+在看哦!

SD-WAN 的出现会让网络工程师失业吗?今天我们来讨论一下!

BGP与OSPF有啥区别?两种协议何时使用?

网络工程师必知的5G网络基础知识,精!
---END---
重磅!网络技术干货圈-技术交流群已成立
扫码可添加小编微信,申请进群。 一定要备注:工种+地点+学校/公司+昵称(如网络工程师+南京+苏宁+猪八戒),根据格式备注,可更快被通过且邀请进群

▲长按加群

SD-WAN 的出现会让网络工程师失业吗?今天我们来讨论一下!

BGP与OSPF有啥区别?两种协议何时使用?

网络工程师必知的5G网络基础知识,精!
