![为什么在此之后我仍然需要以 sudo 身份运行关机?](https://linux22.com/image/82453/%E4%B8%BA%E4%BB%80%E4%B9%88%E5%9C%A8%E6%AD%A4%E4%B9%8B%E5%90%8E%E6%88%91%E4%BB%8D%E7%84%B6%E9%9C%80%E8%A6%81%E4%BB%A5%20sudo%20%E8%BA%AB%E4%BB%BD%E8%BF%90%E8%A1%8C%E5%85%B3%E6%9C%BA%EF%BC%9F.png)
我正在运行 Linux Mint 17.3。
默认情况下,运行 shutdown 或其他命令(例如重新启动、关闭电源)需要 root 权限。
所以我添加了以下行
lesaff_b ALL=(ALL) NOPASSWD:/sbin/poweroff、/sbin/reboot、/sbin/shutdown
到 /etc/sudoers.我知道它仍然要求我以 sudo 身份运行这些命令,但它不会要求输入密码,因此我为每个命令创建了一个别名。
第一次工作正常,但后来停止工作,我现在需要以 sudo 身份运行这些命令并输入密码。我知道还有其他方法可以在不使用 sudo 的情况下运行这些命令,但为什么它应该起作用却不起作用,最重要的是,为什么它一次起作用?
答案1
鉴于我们在评论中了解到的信息,似乎:
- 您运行了一些命令
sudo
(也许编辑 sudoers 以在 Q 中添加引用的 NOPASSWD 行) timestamp_timeout
sudo 缓存了这些凭据,允许您在(默认情况下 5 分钟,我相信)内运行重新启动或关闭- 但在重新启动后(超过
timestamp_timeout
),系统再次提示您输入这些命令的密码,因为存在预先存在的 ALL:ALL sudo 规则没有NOPASSWD 标志——您没有添加但被困住了。因为sudo 使用最后一个匹配规则,它意外地提示了你。
这里的解决方案是将您的规则移至预先存在的 ALL:ALL 规则下方(或者,如果您愿意,可以将 NOPASSWD 标志添加到现有的 ALL:ALL 规则中)。