Подтвердить что ты не робот

Nginx на Ubuntu: разрешение отклонено

Я новичок в системном администрировании. После установки nginx через кукольный на Ubuntu я получаю следующий вывод:

[alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied)

[warn] 1898#0: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:1

[emerg] 1898#0: open() "/var/log/nginx/access.log" failed (13: Permission denied)

Как мне избавиться от всех этих сообщений?

Я не хочу использовать командную строку напрямую (chown/chmod) и повторять ее каждый раз при создании нового сервера. Поэтому я думаю о том, что должно быть добавлено к манифесту марионеток.

Какова наилучшая практика sysadmin в этом случае: изменить владельца/разрешения для /var/log/nginx или хранить журналы в другом месте? Если chown/chmod - это путь, какие конкретные разрешения будут обеспечивать самый высокий уровень безопасности?

Я пробовал это, но это не помогло:

  file { '/var/log/nginx':
    ensure  => directory,
    mode    => '0755',
    owner   => 'www-data',
    group   => 'www-data',
    recurse => true
  }

Отредактировано:

[email protected]:~$ ps aux | grep [n]ginx
root      1001  0.0  0.1  62908  1388 ?        Ss   08:47   0:00 nginx: master process /usr/sbin/nginx
www-data  1002  0.0  0.1  63260  1696 ?        S    08:47   0:00 nginx: worker process
www-data  1003  0.0  0.1  63260  1696 ?        S    08:47   0:00 nginx: worker process
www-data  1004  0.0  0.1  63260  1696 ?        S    08:47   0:00 nginx: worker process
www-data  1005  0.0  0.1  63260  1696 ?        S    08:47   0:00 nginx: worker process
4b9b3361

Ответ 1

Убедитесь, что вы запускаете тест в качестве суперпользователя.

sudo nginx -t

Или у теста не будет всех разрешений, необходимых для успешного завершения теста.

Ответ 2

Если я предполагаю, что ваш второй код является марионеткой, то у меня есть логическое объяснение, если файлы ошибок и журналов были созданы раньше, вы можете попробовать это

sudo chown -R www-data:www-data /var/log/nginx;
sudo chmod -R 755 /var/log/nginx;

Ответ 3

Я столкнулся с подобной проблемой при перезапуске Nginx и нашел, что это причина SeLinux. Обязательно попробуйте либо отключить SeLinux, либо временно установить его в разрешающем режиме, используя следующую команду:

setenforce 0

Надеюсь, это поможет:)

Ответ 4

только потому, что у вас нет права доступа к файлу, используйте

chmod -R 755 /var/log/nginx;

или вы можете перейти к sudo, затем

Ответ 5

Разрешение на просмотр файлов журнала предоставляется пользователям, находящимся в группе adm.

Чтобы добавить пользователя в эту группу в командной строке:

sudo usermod -aG adm <USER>

Ответ 6

Для меня я просто изменил selinux с принудительного на permissive, а затем я смог запустить nginx без ошибок.

Ответ 7

Я просто устанавливаю двоичный путь nginx для замены пути /var/log/nginx/error.log, а другой - с локальным путем.

$ perl -pi \
    -e '[email protected]/var/log/nginx/@_var_log_nginx/@g;' \
    -e '[email protected]/var/lib/nginx/@_var_lib_nginx/@g;' \
    -e '[email protected]/var/run/[email protected]_var_run/[email protected];' \
    -e '[email protected]/run/[email protected]_run/[email protected];' \
    < /usr/sbin/nginx > nginx
$ chmod +x nginx
$ mkdir _var_log_nginx _var_lib_nginx _var_run _run
$ ./nginx -p . -c nginx.conf

Он работает для тестирования.

Ответ 8

если вы не хотите запускать nginx как root.

Первый созданный файл журнала:

sudo touch/var/log/nginx/error.log

а затем исправить разрешения:

sudo chown -R www-data:www-data/var/log/nginx

sudo find/var/log/nginx -type f -exec chmod 666 {} \;

sudo find/var/log/nginx -type d -exec chmod 755 {} \;

Ответ 9

Nginx необходимо запустить командой 'sudo /etc/init.d/nginx start'