it-swarm.dev

nginx na Ubuntu: Odmowa uprawnień

Jestem nowy w administracji systemem. Po zainstalowaniu nginx przez marionetkę na Ubuntu otrzymuję następujące dane wyjściowe:

[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)

Jak pozbyć się wszystkich tych wiadomości?

Nie chcę używać bezpośrednio linii poleceń (chown/chmod) i powtarzać to za każdym razem, gdy tworzę nowy serwer. Dlatego myślę o tym, co należy dodać do manifestu kukiełki.

Jaka jest najlepsza praktyka sysadmin w tym przypadku: zmienić właściciela/uprawnienia dla/var/log/nginx lub przechowywać logi w innej lokalizacji? Jeśli chown/chmod jest dobrym rozwiązaniem, które konkretne uprawnienia zapewnią najwyższy poziom bezpieczeństwa?

Próbowałem tego, ale to nie pomogło:

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

Edytowane:

[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
41
krn

Upewnij się, że uruchamiasz test jako administrator.

Sudo nginx -t

Lub test nie będzie miał wszystkich uprawnień potrzebnych do prawidłowego wykonania testu.

148
Carlsson

Jeśli założę, że twój drugi kod to konfiguracja marionetek, mam logiczne wyjaśnienie, jeśli pliki błędów i dzienników zostały utworzone wcześniej, możesz spróbować tego

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

Podczas ponownego uruchamiania Nginx i odkryłem, że jest to przyczyna SeLinux . Upewnij się, że spróbujesz po wyłączeniu SeLinux lub tymczasowym ustawieniu go na tryb Permissive używając poniższego polecenia:

setenforce 0

Mam nadzieję, że to pomoże :)

21
Chirag Jain

tylko dlatego, że nie masz prawa dostępu do pliku, użyj

chmod -R 755 /var/log/nginx;

lub możesz zmienić to na Sudo 

7
Wang Kevin

Zezwolenie na wyświetlanie plików dziennika przyznawane jest użytkownikom znajdującym się w grupie adm.

Aby dodać użytkownika do tej grupy w wydaniu wiersza polecenia:

Sudo usermod -aG adm <USER>
5
Stéphane

jeśli nie chcesz uruchamiać nginx jako root.

pierwszy plik dziennika kreacji:

Sudo touch /var/log/nginx/error.log

a następnie napraw uprawnienia:

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 {} \;

0
Amin.Qarabaqi

Dla mnie właśnie zmieniłem selinux z wymuszania na permisywny, a następnie mogłem uruchomić nginx bez żadnego błędu.

0
vipin kumar

Po prostu łatam plik binarny nginx, zastępując ścieżkę /var/log/nginx/error.log i inną ścieżką lokalną.

$ 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

Działa do testowania.

0
starius