作为特权用户,我试图将sudo密码设置为另一个密码,然后是登录时使用的密码。
我做了一些研究,但没有找到答案。请问sudo那种配置的支持?
如果您丢失密码,您将失去一切。有人可以root使用相同的密码登录并提升自己。
sudo有一个选项可以要求输入root密码而不是调用用户密码,( rootpw),但是共享root密码绝对不是一个选项,这就是我们设置sudo.
我config 2FA过去做过,效果很好,但也违背了自动化的目的。例如,如果您想使用expect脚本在十几个服务器上执行特权命令,则添加2FA不允许您这样做。
我发现的最接近的解决方案是只允许使用与sudo(登录)密码不同的密钥的 SSH 私钥和设置密码短语。尽管如此,它还是不舒服,因为在紧急情况下,您无法使用没有该密钥的 PC 登录。
der*_*ert 33
如果您想询问 root 密码,而不是用户密码,您可以在/etc/sudoers. rootpw特别是会要求输入 root 密码。有runaspw和targetpw为好; 有关详细信息,请参阅 sudoers(5) 联机帮助页。
除此之外,sudo 通过 PAM 进行身份验证(与其他所有内容一样)。PAM 支持按应用程序配置。Sudo 的配置在(至少在我的 Debian 系统上)/etc/pam.d/sudo,看起来像这样:
$ cat sudo
#%PAM-1.0
@include common-auth
@include common-account
@include common-session-noninteractive
Run Code Online (Sandbox Code Playgroud)
换句话说,默认情况下,它像系统上的其他所有东西一样进行身份验证。您可以更改该@include common-auth行,并让 PAM(以及 sudo)使用备用密码源。common-auth 中未注释掉的行看起来像(默认情况下,如果您使用例如 LDAP,这将有所不同):
auth [success=1 default=ignore] pam_unix.so nullok_secure
auth requisite pam_deny.so
auth required pam_permit.so
Run Code Online (Sandbox Code Playgroud)
您可以使用 eg,pam_userdb.so而不是pam_unix.so,并将您的备用密码存储在 Berkeley DB 数据库中。
我创建了目录/var/local/sudopass,所有者/组root:shadow,模式2750。在其中,我继续使用db5.1_load(这是在 Debian Wheezy 上使用的 Berkeley DB 版本)创建了一个密码数据库文件:
# umask 0027 # db5.1_load -h /var/local/sudopass -t hash -T passwd.db 安东尼 WMaEFvCFEFpl ^D
该散列是用 生成的mkpasswd -m des,使用密码“password”。非常安全!(不幸的是,pam_userdb 似乎不支持比古老的crypt(3)散列更好的东西)。
现在,编辑/etc/pam.d/sudo并删除该@include common-auth行,并将其放在适当的位置:
auth [success=1 default=ignore] pam_userdb.so crypt=crypt db=/var/local/sudopass/passwd
auth requisite pam_deny.so
auth required pam_permit.so
Run Code Online (Sandbox Code Playgroud)
请注意,pam_userdb.db向传递的数据库添加了扩展名,因此您必须保持.db关闭状态。
根据dannysauer在评论中的说法,您可能也需要进行相同的编辑/etc/pam.d/sudo-i。
现在,要 sudo,我必须使用password而不是我的真实登录密码:
安东尼@sudotest:~$ sudo -K anthony@sudotest:~$ sudo echo -e '\nit 工作' [sudo] 安东尼的密码: passwordRETURN 有效
对于 Redhat/Centos,可以通过以下步骤来实现:
创建自定义用户并通过:
# db_load -t hash -T /usr/local/etc/passwd.db
user
pass
^d
Run Code Online (Sandbox Code Playgroud)
编辑 sudo pam.d 文件,使其看起来像:
$ cat /etc/pam.d/sudo
auth required pam_userdb.so db=/usr/local/etc/passwd
account required pam_userdb.so db=/usr/local/etc/passwd
password include system-auth
session optional pam_keyinit.so revoke
session required pam_limits.so
Run Code Online (Sandbox Code Playgroud)
我仍在寻找配置方式,以便只有某个用户/组必须通过此自定义方法进行身份验证,其他人仍然可以通过正常的系统身份验证方法进行身份验证。谁能给我一些建议?
| 归档时间: |
|
| 查看次数: |
21389 次 |
| 最近记录: |