Sudo 指令读取日志文件

Sudo 指令读取日志文件

这有效:

apache ALL=(ALL) NOPASSWD:ALL

但这并没有:

apache ALL=(ALL) NOPASSWD:/var/log/maillog

它说:“sudo:不存在 tty,并且未指定 Askpass 程序。”

路径是正确的。我在这里错过了什么吗?想法?

在后面添加空格NOPASSWD:并没有使它起作用。我正在.sh从 PHP 调用一个文件,其中包含以下内容:

#!/bin/sh
grep bounced /var/log/maillog

我添加了脚本和日志文件的路径,但它不起作用。

答案1

sudoers 线

apache ALL=(ALL) NOPASSWD:/var/log/maillog

允许apache用户执行文件/var/log/maillog。但是您的脚本会执行grep,因此该行不适用。

Sudo 通过命令工作。无法使用它来允许通过任何命令访问特定文件。grep bounced /var/log/maillog如果您想要的话,您可以允许该命令。但是,如果您想要的只是允许用户使用任何程序apache进行读取/var/log/maillog,那么您应该做的就是添加apache到该文件的访问控制列表中。

setfacl -m user:apache:r /var/log/maillog

每次由于日志轮转而重新创建文件时都需要执行此命令。这是使用足够新的 logrotate 版本自动完成的。如果你的版本太旧,将该命令作为postrotate条目添加到您的 logrotate 配置中

相关内容