如果用户从特定主机远程login,如何configurationSUDO无密码

我想configuration我的Debiansudoers文件如下:

  • 如果USERNAME从IP aaaa远程login:不需要密码即可使用sudo
  • 如果USERNAME从其他地方或本地远程访问:使用sudo需要密码

我知道如何做到这一点,所以他们总是需要,或从来没有需要,但我不知道如何configuration多个位置。

我想你误解了sudoers文件中主机列表的目的。 它存在,因此您可以在多个主机上使用相同的文件,而不允许在每个主机上拥有相同的权限。

相反,你应该使用SSH密钥来允许以root身份进行无密码login。 您可以为有问题的用户创build两个密钥。 使用密码encryption其中一个密钥,并保留另一个明文。 在您的服务器上,将公钥放入root的.ssh / authorized keys文件中。 然后from="aaaa"置于无密码的公钥的行,以防止任何人从其他主机使用它。

这要求你允许通过ssh进行root用户login,但是你应该只允许用ssh密钥login。 确保您的sshd_config具有以下设置:

 PermitRootLogin without-password 

我不确定是否已经有一个模块可以做到这一点,但是您肯定可以通过PAM系统来完成。

确认用户通过sshlogin并使用正确IP的模块可以用sufficient行input到sudoconfiguration中,它将授予访问权限。

我会看看http://www.netbsd.org/docs/guide/en/chap-pam.html#pam-appl-prog中的示例,并可能从那里或使用pam_rhosts作为示例。

 requisite authorized_user #sudoers file / existing module? sufficient via_ssh_from_listed_host required password #usual sudo thing 

这是所需的模块模式。