GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Berechtigung verweigert, da Suchberechtigungen für eine Komponente des Pfads nach chmod und chgrp fehlen

Endlich eine Lösung gefunden. Ich habe diese beiden Funktionen ausgeführt, um die Ordner- und Dateiberechtigungen von www und innerhalb rekursiv zu archivieren.

find /var/www -type d -exec chmod 755 {} \;
find /var/www -type f -exec chmod 644 {} \;

Ich habe diese Seite hier gelesen:https://wiki.apache.org/httpd/13PermissionDeniedund sie hat im Grunde erklärt und mich daran erinnert, dass Berechtigungen vererbt werden, "dasselbe für das Verzeichnis und jedes übergeordnete Verzeichnis tun". Also habe ich diese 2 ausgeführt und alles funktioniert wieder.


Normalerweise ist die Ausführungsberechtigung für einen Pfad nicht festgelegt, wie es in dieser Frage der Fall war. Der einfachste Weg, dies zu lösen, ist der folgende Befehl:

chmod a+rX -R /var/www

Bei der Verwendung von CentOS7 oder RHEL7 können jedoch Probleme mit SELinux auftreten. Wenn die Dateiberechtigungen richtig sind und Sie den Fehler immer noch erhalten, sehen Sie sich das folgende Protokoll an:

tail -f /var/log/audit/audit.log

Wenn Sie eine Nachricht wie diese erhalten:

type=AVC msg=audit(1464350432.916:8222): avc:  denied  { getattr } for  pid=17526 comm="httpd" path="/var/www/app/index.html" dev="sda1" ino=42021595 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=file
type=SYSCALL msg=audit(1464350432.916:8222): arch=c000003e syscall=4 success=no exit=-13 a0=7fde4e450d40 a1=7ffd05e79640 a2=7ffd05e79640 a3=7fde42e43792 items=0 ppid=17524 pid=17526 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="httpd" exe="/usr/sbin/httpd" subj=system_u:system_r:httpd_t:s0 key=(null)

Das bedeutet:SELinux sperrt den Zugriff auf Ihr Document Root. Sie können einen Befehl wie diesen ausprobieren (Rekursiv und ausführlich bei Option -Rv ):

chcon  --user system_u --type httpd_sys_content_t -Rv /var/www/app/public

Um die richtigen Einstellungen zu finden, schauen Sie in ein Arbeitsverzeichnis wie /var/www/html damit:

ls -laZ /var/www/

Es sollte so aussehen:

drwxr-xr-x. server server system_u:object_r:httpd_sys_content_t:s0 .
drwxr-xr-x. root   root   system_u:object_r:var_t:s0       ..
drwxr-xr-x. server server system_u:object_r:httpd_sys_script_exec_t:s0 cgi-bin
drwxr-xr-x. server server system_u:object_r:httpd_sys_content_t:s0 html
drwxrwxr-x. server server unconfined_u:object_r:var_t:s0   app

Für Leute, die das obige versucht haben und immer noch Probleme haben, stellen Sie sicher, dass keines der Verzeichnisse im Pfad eine ACL enthält, die den Apache-Zugriff verhindert.

Sie können Folgendes verwenden:

getfacl <directoryname>

um die Berechtigungen für das Verzeichnis zu erhalten, die möglicherweise mithilfe von ACLs festgelegt wurden. Sie werden so etwas wie das Folgende sehen, das im Grunde besagt, dass der Benutzer alle Berechtigungen hat und die Gruppe lesen und ausführen (oder suchen), aber nicht schreiben darf:

# file: <directoryname>
# owner: username
# group: username
user::rwx
user:1000:rwx
group::---
group:username:r-x
mask::rwx
other::rwx

Um Apache oder einer Gruppe Zugriff auf die Verwendung von ACLs zu gewähren, verwenden Sie Folgendes:

setfacl -m g:<groupname>:rx <directoryname>

Stellen Sie einfach sicher, dass die übergeordneten Verzeichnisse dasselbe haben. Sie können den Schalter -R verwenden, um die Änderung rekursiv im obersten Verzeichnis vorzunehmen.

Ich bin auf dasselbe Apache-Berechtigungsproblem gestoßen und habe mir den Kopf zerbrochen, als ich versuchte herauszufinden, warum chmod und chown keine Wirkung hatten, bevor mir einfiel, dass ich ACLs für das Verzeichnis gesetzt hatte, als ich vor einer Weile Samba benutzte.


Linux
  1. Einführung in die Linux-Befehle chgrp und newgrp

  2. Einführung in den Linux-Befehl chmod

  3. Chmod 777 in einen Ordner und alle Inhalte

  4. Sind tar.gz und tgz dasselbe?

  5. JAVA_HOME und PATH sind gesetzt, aber java -version zeigt immer noch die alte

Was ist Intel SGX und was sind die Vorteile?

IMAP vs. POP3 vs. SMTP:Was sind die Unterschiede?

So ändern Sie die Dateiberechtigungen in Linux rekursiv

Was sind die Vorteile von CloudLinux?

Verwalten Sie Verzeichnis- und Dateiberechtigungen mit chmod Recursive

Wie sind CPU-Zeit und CPU-Auslastung gleich?