使用一个密码进行管理,使用另一个密码进行系统登录


10

如何在登录时给用户一个正常使用的密码,以及一个用于系统管理和sudo访问的密码?我希望一个用户拥有两个密码。


1
为什么不只创建2个帐户,一个帐户用于正常使用,另一个帐户则允许使用sudo。
路易斯·阿尔瓦拉多

不,我只需要一个帐户就可以使用
Varun Sridharan

为什么需要这个帐户才能成为一个帐户?您可以创建一个具有sudo访问权但没有单独主文件夹的单独帐户,然后将该用户添加为与普通用户相同的组,并将其设置为使用相同的主文件夹,与sudo usermod -d /path/to/new/home
Warren Hill

@SVarun自您上次发表评论以来,我用对我有用的步骤更新了我的答案。您可以检查一下,让我知道它是否适合您吗?
亚伦D

Answers:


16

有一种方法可以通过覆盖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文件时使用的新密码。要更新文件,请再次使用有用的工具。


我需要在Ubuntu上运行是有任何其他方式
Varun的Sridharan说

我更新了答案-如果我正确理解了您的问题,我已经测试了此方法,它可以满足您的要求。请尝试一下。
亚伦D

1
+50赏金 @AaronD您的回答解决了我的问题。谢谢!!!
罗比·维克兹

很高兴您发现它有用!
亚伦D

1

解决原始问题的方法要简单得多,这就是我的运行方式:

  • 创建一个非管理员用户
  • 创建一个管理员用户

始终以非管理员用户身份登录,只要非管理员用户需要执行任何“管理”操作,只需:

fab-user@fab-ux:/media/Data/Temp
$ su - fab-root 
Password: 
fab-root@fab-ux:~
$ sudo smartctl --all /dev/sdc

是的,这不是您想要的,而是您真正需要的

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.