Folgendes habe ich in ls -al /etc/nginx
:
total 52
drwxr-xr-x. 4 root root 4096 Jul 28 04:16 .
drwxr-xr-x. 78 root root 8192 Jul 28 03:37 ..
drwxr-xr-x. 2 root root 26 Jul 28 03:55 conf.d
drwxr-xr-x. 2 root root 6 May 10 09:21 default.d
-rw-r--r--. 1 root root 1034 May 10 09:21 fastcgi.conf
-rw-r--r--. 1 root root 964 May 10 09:21 fastcgi_params
-rw-r--r--. 1 root root 2837 May 10 09:21 koi-utf
-rw-r--r--. 1 root root 2223 May 10 09:21 koi-win
-rw-r--r--. 1 root root 3957 May 10 09:21 mime.types
-rw-r--r--. 1 root root 1033 Jul 28 03:43 nginx.conf
-rw-r--r--. 1 root root 596 May 10 09:21 scgi_params
-rw-r--r--. 1 root root 623 May 10 09:21 uwsgi_params
-rw-r--r--. 1 root root 3610 May 10 09:21 win-utf
Das sehe ich /var/log/nginx/error.log
danach sudo service nginx start
:
[emerg] 20360#0: open() "/etc/nginx/conf.d/foo.conf" failed
(13: Permission denied) in /etc/nginx/nginx.conf:33
Das habe ich in ls -al /etc/nginx/conf.d/
:
$ ls -al /etc/nginx/conf.d/
total 8
drwxr-xr-x. 2 root root 26 Jul 28 03:55 .
drwxr-xr-x. 4 root root 4096 Jul 28 04:16 ..
-rw-r--r--. 1 root root 230 Jul 28 03:50 foo.conf
Was ist los?
ls -lZ
zeigt? Versuchen Sie zusetenforce 0
sehen, ob es funktioniert.setenforce 0
geholfen. Bitte senden Sie es als Antwort, ich werde es akzeptierenAntworten:
Wenn Sie
permission denied
aus unbekannten Gründen Fehler beim Dateizugriff usw. erhalten, kann dies mit SELinux zusammenhängen. Insbesondere wenn nach den Berechtigungendrwxr-xr-x.
, diels -l
für die betreffende Datei / das betreffende Verzeichnis angezeigt werden, ein Zeitraum angezeigt wird , können diese falsch beschriftet sein (Sie können dies anhand von sehen)ls -Z
) und das Problem verursachen.Sie sollten zuerst den aktuellen SELinux-Modus überprüfen, indem Sie ihn ausführen
getenforce
. Wenn dies der Fall istEnforcing
, stellen Sie den Modus vorübergehendPermissive
durch Ausführen auf einsetenforce 0
, und prüfen Sie, ob Ihre Anwendung anschließend funktioniert.Informationen zur dauerhaften Korrektur finden Sie im Handbuch Ihrer Distribution zu SELinux, einschließlich der Einstellung des SELinux-Modus beim Start, der Neukennzeichnung von Dateien oder Verzeichnissen, der Aktualisierung von Richtlinien usw. Hier finden Sie eine Anleitung für CentOS .
quelle
Das Ändern von ganz SElinux ist nicht immer die richtige Antwort. Ich bin kein Experte, aber ich würde es mit dem Deaktivieren der Firewall vergleichen, wenn auf einen Port nicht zugegriffen werden kann.
Eine andere schnelle Lösung könnte darin bestehen, den SE-Kontext von Dateien wiederherzustellen, insbesondere wenn diese von irgendwoher kopiert werden.
Weitere Informationen finden Sie unter https://www.thegeekstuff.com/2017/05/restorecon-examples/ .
Dies sind Befehle, die Sie ausprobieren sollten, bevor Sie SElinux deaktivieren
quelle
Ein besserer Weg als das Deaktivieren von Selinux ist die Verwendung des Befehls
Dadurch kann der Zehen-Nginx-Dienst bestanden werden, ohne Selinux vollständig zu deaktivieren
Weitere Informationen unter https://www.nginx.com/blog/using-nginx-plus-with-selinux/
Allerdings
command chcon -v --type=httpd_sys_content_t /etc/nginx/*
funktionierte für mich das und es funktionierte einwandfrei, ohne httpd_t ausnehmen zu müssenquelle