如何在不使⽤密码的情况下切换(su)到另⼀个⽤户帐户
在本⽂中,我们将展⽰如何在不需要密码的情况下切换到另⼀个或特定的⽤户账户。例如,我们有⼀个名为postgres的⽤户账户(默认的PostgreSQL超级⽤户系统账户),我们希望在名为postgres的组中的每个⽤户(通常是我们的PostgreSQL数据库和系统管理员)使⽤su命令切换到postgres账户,⽽⽆需输⼊密码。
默认情况下,只有root⽤户可以在不输⼊密码的情况下切换到另⼀个⽤户账户。任何其他⽤户都会被提⽰输⼊他们要切换到的⽤户账户的密码(如果他们使⽤的是sudo命令,则会被提⽰输⼊他们的密码),如果他们没有提供正确的密码,他们会得到⼀个"authentication failed"认证失败的错误提⽰。
您可以使⽤下⾯提供的两种解决⽅案中的任何⼀种来解决上述问题。
1.使⽤PAM⾝份验证模块
PAM(可插⼊⾝份验证模块)是现代Linux操作系统上⽤户⾝份验证的核⼼。为了允许特定组中的⽤户⽆需密码即可切换到另⼀个⽤户帐户,我们可以在/etc/pam.d/su⽂件中修改su命令的默认PAM设置。
#vim /etc/pam.d/su
$ sudo vim /etc/pam.d/su
vim命令查下一个
在 "auth sufficient 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组中,如果是,则认为认证过程成功,并返回⾜够的结果。否则,将执⾏正常的认证步骤。
auth sufficient pam_succeed_if.so use_uid user ingroup postgres
保存⽂件并关闭它。
接下来,使⽤usermod命令将您想要的⽤户(例如aaronk)添加su到postgres帐户中,⽽⽆需输⼊密码
到group postgres中。
$sudo usermod -aG postgres aaronk
现在尝试以aaronk⽤户⾝份登录su到postgres帐户,不应该提⽰您输⼊密码,如以下屏幕截图所⽰:
$ su - postgres
2.使⽤Sudoers⽂件
你也可以通过在sudoers⽂件中做⼀些修改,在不需要密码的情况下su到另⼀个⽤户。在这种情况下,将切换到另⼀个⽤户帐户(例如postgres)的⽤户(例如aronk)应该在sudoers⽂件或sudo组中,以便能够调⽤sudo命令。
$ sudo visudo
然后在"%sudo ALL=(ALL:ALL) ALL "⼀⾏下⾯添加以下配置,如下所⽰。
aaronk ALL=NOPASSWD: /bin/su – postgres

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。