我已将 /etc/sudoers 文件配置为包含 /etc/sudoers.d 文件夹中的所有文件。
这似乎工作得很好。但时不时地,服务器会忘记并且脚本无法执行,并且我收到此错误:“不存在 tty 并且未指定 Askpass 程序”
不久之后,在没有任何更改(就我而言)的情况下,服务器会记住并且脚本再次开始工作。
在这里你可以看到我允许的文件已经很长一段时间没有被修改了:
-rw-r--r-- 1 root root 67 Jul 27 20:34 admin-tools
然而,大约每天一次,并且只持续很短的时间(通常在 20 到 90 分钟之间),脚本将不会运行并且会出现该错误。该脚本由特定网页触发,并以 www-data 用户身份每 10 分钟运行一次。当它失败时,它会失败 2 到 9 次,因此我的时间估计。
谁能想到什么可能导致服务器忘记 sudoers.d 文件夹中的内容?
如果您需要知道我的配置文件中的内容,这里是:
www-data ALL = NOPASSWD: [PATH TO MY SCRIPT]/file-copy.sh
答案1
发现问题了!
事实证明,该脚本安装在 NFS 共享上,并且由于某种未知原因,到该共享的路由随机更改。
我稍后会缩小范围,但由于 /etc/sudoers.d 文件夹中的权限文件仅期望脚本基于一个路径存在,因此当它转移到另一映射时会失败。
所以现在,我在 sudoers 文件中包含了两个可能的路径。
现在...去弄清楚为什么映射会发生变化!