如何在登录时给用户一个正常使用的密码,以及一个用于系统管理和sudo访问的密码?我希望一个用户拥有两个密码。
sudo usermod -d /path/to/new/home
如何在登录时给用户一个正常使用的密码,以及一个用于系统管理和sudo访问的密码?我希望一个用户拥有两个密码。
sudo usermod -d /path/to/new/home
Answers:
有一种方法可以通过覆盖sudo服务的PAM(可插入身份验证模块)设置来实现。这样做会对您的计算机造成很大的风险-除非您了解该命令的作用,否则不要只是复制并粘贴它,并且始终保持root终端处于打开状态-测试测试!-在注销之前,以防万一您需要返回并修复某些内容。
我建议阅读一些有关PAM工作原理的信息,以便您了解如果PAM破裂了该怎么办。我还建议大多数用户从不同角度解决此问题(为管理创建一个单独的用户帐户),因为如果未正确设置权限,该解决方案可能会受到密码哈希表攻击。
如果确定要继续,则需要安装新的PAM模块。pam_pwdfile使用旧式的/ etc / passwd类型文件进行身份验证,这非常适合为不同的服务使用不同的密码。它不提供帐户识别功能-您可以为系统上不存在的用户创建用户名/密码对。由于我们将其用于sudo,所以没关系,因为我们只需要让sudo检查帐户是否以通常的方式存在即可。
sudo apt-get install libpam-pwdfile
我还建议抓住一个方便的htpasswd文件编辑器。Benjamin Schweizer用python创建了一个方便的编辑器,效果很好。从http://benjamin-schweizer.de/htpasswd_editor.html抓取并安装其依赖项:
sudo apt-get install python-newt
使用工具-生成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
显然用生成的htpasswd文件的路径替换了最后一个参数。注释掉下一行:#@include common-auth
确保它正在使用新的身份验证方法。
提醒您-您将需要/etc/pam.d/sudo
从根终端编辑文件。未经测试请勿关闭!如果这样做,则可能无法重新登录(如果您损坏了某些东西),则必须从恢复磁盘启动以修复系统。在注销之前进行测试,方法是打开新终端并尝试使用sudo
。您应该发现它不再能与常规登录密码一起使用,而是需要您在生成passwd文件时使用的新密码。要更新文件,请再次使用有用的工具。