У меня есть сервер Apache2, который не может получить доступ к журналу безопасности мода:
prim@x.x.x.x:~$ apachectl -V
AH00526: Syntax error on line 196 of /etc/modsecurity/modsecurity.conf:
ModSecurity: Failed to open the audit log file: /var/log/apache2/modsec_audit.log
Action '-V' failed.
The Apache error log may have more information.
prim@x.x.x.x:~$ sudo ls -la /var/log/apache2/modsec_audit.log
-rw-rwxrwx 1 root www-data 101792 Oct 22 16:37 /var/log/apache2/modsec_audit.log
Я немного озадачен, потому что все (владелец, группа, другие) имеют право открывать файл журнала.
редактировать:
prim@x.x.x.:/var/log/unattended-upgrades$ sudo -u www-data touch /var/log/apache2/modsec_audit.log
touch: cannot touch '/var/log/apache2/modsec_audit.log': Permission denied
Это становится еще более странным ...
edit2:
prim@x.x.x.x:/var/log/unattended-upgrades$ sudo ls -la /var/log/apache2/
total 1015752
drw-r--r-- 2 root adm 12288 Oct 22 15:55 .
edit3:
ls -la /var/log|grep apache
drw-r--r-- 2 root adm 12288 Oct 22 15:55 apache2
Вы не могли прикоснуться к modsec_audit.log, т.е.
sudo -u www-data touch /var/log/apache2/modsec_audit.log
потому что каталог журнала принадлежит root: adm. www-data не является корневым и, скорее всего, принадлежит группе adm. Группа и другие могут читать только в вашем каталоге журналов. Только root: adm действительно может писать.
Я столкнулся с той же проблемой в CentOS 7, где основной процесс httpd запускается как root, а затем порождает ряд дочерних процессов, которые работают как apache: apache. В Debian / Ubuntu он должен быть таким же, за исключением разницы между apache и www-данными.
Здесь, в CentOS 7, я могу запускать apachectl, httpd и т. Д. Только как root. В противном случае возникает та же «синтаксическая ошибка». Также это происходит, только если установлен mod_security.
В основном это apachectl / httpd / etc. вызов mod_security как непривилегированного пользователя для проверки его конфигурации на наличие синтаксических ошибок, но он, mod_security, по-видимому, серьезно относится к безопасности :) и не может открыть файлы журнала от имени вызывающего пользователя, у которого нет разрешения на это.
Так что просто беги
sudo apachectl -V
В качестве альтернативы вы можете