Var*_*ran 10 sudo password pam
如何在登录时为用户提供一个正常使用的密码,以及另一个用于系统管理和sudo 访问的密码?我希望一个用户有两个密码。
Aar*_*n D 16
有一种方法可以通过覆盖 sudo 服务的 PAM(可插入身份验证模块)设置来执行此操作。这样做对您的机器有很大的风险-除非您了解命令的作用,否则不要只是复制和粘贴,并且始终保持根终端打开-测试测试测试!- 在注销之前,以防您需要返回并修复某些内容。
我建议您阅读一些有关 PAM 工作原理的信息,以便您知道如果它损坏了该怎么办。我还建议大多数用户从不同的角度解决这个问题(创建一个单独的用户帐户进行管理),因为如果您没有正确设置权限,该解决方案可能容易受到对密码的哈希表攻击。
如果您决定继续,则需要安装新的 PAM 模块。pam_pwdfile 使用旧式的 /etc/passwd 类型文件进行身份验证,这非常适合为不同的服务使用不同的密码。它不提供帐户识别 - 您可以为系统上不存在的用户创建用户名/密码对。由于我们会将它用于 sudo,所以没有关系,因为我们只会让 sudo 以通常的方式检查帐户是否存在。
sudo apt-get install libpam-pwdfile
Run Code Online (Sandbox Code Playgroud)
我还建议使用一个方便的 htpasswd 文件编辑器。Benjamin Schweizer 用 python 创建了一个方便的编辑器,效果很好。从http://benjamin-schweizer.de/htpasswd_editor.html 获取它并安装它的依赖项:
sudo apt-get install python-newt
Run Code Online (Sandbox Code Playgroud)
使用工具 - 生成 htpasswd 格式的文件sudo python htpasswd_editor sudo.passwd。使用您将用于 sudo的相同用户名输入用户名和密码- 每个将使用它的用户一个。将它复制到某个安全的地方(测试时我把它放在 /etc/sudo.passwd 中)并使普通用户无法读取它:chmod 660 /etc/sudo.passwd作为 root。
确保该文件由 root 拥有并且其他用户无法读取。这是一个漏洞,因为文件包含散列密码,如果其他用户可以读取或写入,则会严重破坏您的安全性。正是出于这个原因,我不建议在必须保持安全的机器上使用此方法。
最后,编辑/etc/pam.d/sudo文件。在其他行上方添加以下行@include ...:
auth required pam_pwdfile.so pwdfile /etc/sudo.passwd
Run Code Online (Sandbox Code Playgroud)
显然,将最后一个参数替换为生成的 htpasswd 文件的路径。注释掉下一行:#@include common-auth以确保它使用新的身份验证方法。
注意事项- 您需要/etc/pam.d/sudo从根终端编辑文件。不要在没有测试的情况下关闭它!如果这样做,您可能无法重新登录(如果您损坏了某些东西),并且必须从恢复磁盘启动以修复您的系统。通过打开新终端在注销前进行测试并尝试使用sudo. 您应该会发现它不再使用您的常规登录密码,而是需要您在生成 passwd 文件时使用的新密码。要更新文件,请再次使用有用的工具。
| 归档时间: |
|
| 查看次数: |
1318 次 |
| 最近记录: |