![sudoers 中的 localhost](https://linux22.com/image/1245703/sudoers%20%E4%B8%AD%E7%9A%84%20localhost.png)
不存在内部攻击的可能性,因此我想使用以下命令向本地计算机上的用户授予 sudo 权限sudoers。我分别尝试了以下几行:
%admin localhost=(ALL) NOPASSWD: ALL
%admin 127.0.0.1=(ALL) NOPASSWD: ALL
但是 sudoers 似乎无法识别localhost
或127.0.0.1
。
有没有其他选择?如果有,安全性如何?远程攻击者是否可以使用以下方式获取本地用户权限计划任务或者其他方法?
答案1
%admin ALL=(ALL) NOPASSWD: ALL
主机列表将 sudo 规则限制为列表中有一个网络接口的名称或地址的主机。由于每个主机都有一个环回接口,因此每个主机都应符合您的规则;事实上,sudo 在检查主机列表时会跳过环回接口,因此没有主机符合您的规则;无论如何,将主机指定为是localhost
没有意义的。
Sudo 不进行任何网络身份验证:主机列表存在,以便您可以sudoers
在多台机器上部署单个文件,并在不同的机器上为用户提供不同的权限。
Cron 也不进行任何网络身份验证。远程用户可以通过配置错误或易受攻击的网络服务器或客户端(http、ftp、samba、nfs、snmp、ssh 等)获取用户权限。
答案2
您的主机名似乎不是“localhost”。查看输出hostname
命令或检查 /etc/hostname 的内容
答案3
sudo 对环回接口 (localhost/127.0.0.1) 一无所知,但它知道所有其他接口。如果您的机器有至少一个这样的接口,则认为它在网络上。因此,在接口配置期间(通常在操作系统安装期间完成),您需要设置“主机名”,或者可能是自动分配的。
此“主机名”可以通过“hostname”命令或 /etc/hostname 文件访问。
因此,
(i)您的机器有一个环回接口,但肯定也有一个“主机名”
(ii)sudo 只能使用这个“网络名称”
(iii)如果您在 sudoers 文件中将“localhost=”替换为“<your hostname>”,则规则将匹配,一切都将按您的预期工作。