我有一个程序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