将apache2 CustomLog管道到作为不同用户运行的程序



我有一个程序a2log2pg,它接受一个apache2 CustomLog并将其写入数据库。

在apache2.conf中,我有一行定义了一个CustomLog并将其管道到a2log2pg。

CustomLog "|/usr/bin/a2log2pg" combined

是apache日志的一种格式。

虽然一切正常,但这种技术导致a2log2pg作为根运行。我宁愿以非特权用户的身份运行它,特别是一个名为a2logger的用户。

为此,我一直在尝试使用这一行:

CustomLog "| sudo -u a2logger /usr/bin/a2log2pg" combined

但是apache拒绝启动。apache日志中的错误是:

No such file or directory: AH00104: unable to start piped log program ' sudo -u a2logger /usr/bin/a2log2pg'

是否有其他语法允许此工作?

暂时把apache放在一边,如果我尝试类似的东西,但只是使用shell脚本,它可以工作:

$ cat 1234.txt
one
two
three
four
$ cat countlines.sh
#!/bin/bash
counter=0
while read line
do
((++counter))
done<&0
echo $USER counted $counter lines

,然后以root用户登录

# cat 1234.txt | sudo -u a2logger ./countlines.sh
a2logger counted 4 lines

您需要在那里提供绝对路径并避免前导空格,如:

CustomLog "|/usr/bin/sudo -u a2logger /usr/bin/a2log2pg" combined

最新更新