我使用的是 Raspberry Pi,但我认为这个问题不是特定于 Raspberry Pi 操作系统的。
我仅使用 SSH 密钥以用户 pi 身份登录。
我有一个脚本该调用sudo -v
当前要求用户输入密码pi
。
我想让这一步变得简单,所以最好让它根本不要求密码或有一个非常简单的密码(如"pi"
)。
但我当然不想通过 SSH 使用如此简单的密码公开用户帐户。
我已经有一个文件包含/etc/sudoers.d
但pi ALL=(ALL) NOPASSWD: ALL
它不会禁用 的密码问题sudo -v
。
我有什么选择?
sudo -l
编辑:按照评论中的要求输出:
pi@klipper:~ $ sudo -l
Matching Defaults entries for pi on klipper:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin, env_keep+=NO_AT_BRIDGE, env_keep+="http_proxy HTTP_PROXY", env_keep+="https_proxy HTTPS_PROXY", env_keep+="ftp_proxy FTP_PROXY",
env_keep+=RSYNC_PROXY, env_keep+="no_proxy NO_PROXY"
User pi may run the following commands on klipper:
(ALL : ALL) ALL
(ALL) NOPASSWD: ALL
答案1
删除(或者更好地注释掉)两个解除授权行中的第一个,sudoers
适用于pi
:
(ALL : ALL) ALL (ALL) NOPASSWD: ALL
这个不需要的密码没有标志NOPASSWD
,因此系统会提示您输入密码。 (适用第一个匹配规则。)
一般来说,我建议你打开两个shell。首先使用sudo -s
以获得 root shell,并且在确认您的编辑没有阻止您使用 之前不要关闭它sudo
。使用第二个进行测试。始终用于visudo
编辑sudoers
文件。
我应该指出,如果第一行对应于组定义
%sudo ALL=(ALL:ALL) ALL
如果没有充分的理由,您不应将其注释掉,因为它允许该组成员的任何人sudo
使用该sudo
命令。
要么修改它,以便该组的所有成员都不需要提供密码,要么将您自己的用户行放在它上面,以便它首先匹配:
pi ALL=(ALL:ALL) NOPASSWD: ALL