与SUDO密码不同的SSH /登录密码


9

我想使用与我用来(通过GUI,shell或SSH)登录我的帐户的密码不同的密码来将用户提升为sudo状态。这可能吗?

编辑: 由于设置root密码将允许以root用户身份登录,所以这不是一个好方法。我希望使用特定于用户的sudo密码,而不是系统范围的root密码。


1
您能详细说明一下吗?为什么要这样做?
道格·哈里斯

1
我觉得这个问题足以说明问题,但目标是通过冗长且困难的密码来确保登录安全,然后使用其他密码进行sudo访问,以免破坏用户帐户不会自动提供sudo访问。
理查德

我听说可以通过rsa / dsa密钥进行sudo,它可以具有您想要的任何密码短语。
罗布2012年

Answers:


2

来自man sudoers:

rootpw          If set, sudo will prompt for the root password instead of the
                password of the invoking user.  This flag is off by default.

runaspw         If set, sudo will prompt for the password of the user defined
                by the runas_default option (defaults to root) instead of the
                password of the invoking user.  This flag is off by default.

或者,您可以完全通过ssh禁止基于密码的登录。要求使用密码加密密钥进行远程登录。然后,您可以自由使用sudo的密码。相关选项是

来自man sshd_config

 PasswordAuthentication
         Specifies whether password authentication is allowed.  The default
         is “yes”.

感谢您的帮助,Chas。欧文斯 恐怕您的解决方案的副作用是root帐户将具有密码,因此有可能以root身份登录,这不是我希望打开的门。我希望使用特定于用户的sudo密码,而不是系统范围的root密码。
理查德

您也可以从sshd_config禁用root登录
Rob

1

您是在sudoers男人中寻找这个吗?

   targetpw        If set, sudo will prompt for the password of the user
                   specified by the -u option (defaults to root) instead of the
                   password of the invoking user. 

感谢您的帮助,johnshen64。恐怕您的解决方案的副作用是root帐户将具有密码,因此有可能以root身份登录,这不是我希望打开的门。我希望使用特定于用户的sudo密码,而不是系统范围的root密码。
理查德

该用户不必是root用户,如果未指定,则默认为root。您可以尝试一下,看看是否适合您。Unix是相当开放的,如果这些仍然不适合您,您甚至可以编写包装器脚本,甚至可以修改sudo(如果您知道c)来完全按照自己的意愿进行操作。
johnshen64

@ johnshen64我认为他反对所有用户都使用相同的密码这一事实。
Chas。欧文斯(Owens)2012年

我知道,但是可以为每个用户创建一个管理员用户,例如$ {USER} foradmin,以便用户始终指定-u $ {USER} foradmin,尽管要强制执行sudo仍需要用自定义脚本替换。
johnshen64,2012年

1

如何通过SSH禁用密码登录并允许公共密钥登录,在此处您可以设置难以猜测的密码。然后,本地密码可以更短并由sudo使用。

除此之外,您还必须配置/etc/pam.d/sudo为使用其他(或其他)模块,乍一看pam_dialpass可能会满足您的需求。

您还可以为一个配置LDAP配置,为另一个配置本地密码。这完全取决于您能够并愿意进行多少更改,可用的模块等。


谢谢您的帮助,布拉姆。您的第一个建议是可行的,除非公用密钥身份验证可能会禁止使用,除非您已经准备好转移密钥文件。
理查德

1

解决方案1:newgrp

解决用例的一种简单方法是:NOPASSWD与组和组passwd结合使用:

在sudoers中添加一行:

%rudo   ALL=(ALL:ALL) NOPASSWD:ALL

创建一个受密码保护的组:

groupadd rudo
gpasswd  rudo # Enter passwd

现在,当您以非特权用户身份登录(假设您尚未在rudo组中)时,登录到该rudo组,此时将提示您输入密码。

login user
newgrp rudo

现在sudo,只要您保持登录状态,就可以运行无密码操作。


解决方案2:runaspw

使用一种更好,可能更安全的方法来执行此操作runaspwrunaspwrunas_default选项相关联,因此您也必须添加该选项。

假设您已经具有默认的%sudo组条目:

%sudo   ALL=(ALL:ALL) ALL

将这些行添加到sudoers文件中:

Defaults:%sudo  runas_default=sudo
Defaults:%sudo  runaspw

现在添加一个sudo具有密码的新用户:

useradd sudo -d /nonexistent -s /usr/sbin/nologin -MNr
passwd sudo

现在,将提示sudo组用户输入sudo用户的passwd,但只有sudo组中的用户才可以进行sudo(与上述组解决方案不同,该组中的任何人或组passwd都可以使用sudo)。

一个小问题是默认的runas用户现在sudo是sudo作为root用户,您需要显式指定root:

sudo -u root <cmd>

但是很容易定义别名(alias sudo='sudo -u root')或间接sudo命令。

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.