Apache2-Berechtigungsproblem

Apache2-Berechtigungsproblem

Ich habe mein DocumentRoot in geändert /home/user/www. Dazu habe ich einfach die beiden Vorkommen des Pfads unter /etc/apache2/sites-available/default geändert.

Die Berechtigungen von /home/user/www sind 0774. Ich habe den Benutzer www-data zu meiner Benutzergruppe hinzugefügt und der Besitzer /home/user/wwwist mein eigener Benutzer und meine eigene Gruppe (Benutzer:Benutzer).

Ich habe das getan, indem ich:

sudo chmod -R 0774 www
sudo chown -R user:user www
sudo adduser www-data user

Das Problem ist, dass Apache nicht in dieses Verzeichnis schreiben kann. Es kann nur schreiben, wenn ich www-data als Besitzer einstelle. Wenn ich das mache, kann ich aber nicht in das Verzeichnis schreiben.

Ich habe die Berechtigungen getestet mit:

sudo -u www-data ls /home/user/www
sudo -u www-data cat /home/user/www/some-file

und es funktioniert.

Aber das Wordpress, das ich habe, wwwkann keine Dateien löschen oder erstellen. Irgendwelche Ideen?

Antwort1

Besser wäre das www-Verzeichnis unter /var/www gewesen, mit dem Besitzer www-data und der Gruppe www-data, undHinzufügen Ihres Benutzers zur WWW-Datengruppe.

Ändern Sie zunächst in der Apache-Konfiguration DocumentRoot usw. zurück in /var/www.

Das Verzeichnis /var/www (und alle darin enthaltenen Unterverzeichnisse) sollte setgid sein, sodass Dateien und Verzeichnisse mit der Gruppe www-data erstellt werden.

Alles Folgende sollte als Root oder mit sudo ausgeführt werden:

mkdir -p /var/www

Wenn sich in /home/user/www Dateien befanden, die Sie behalten möchten, verschieben Sie diese jetzt mit folgendem Befehl nach /var/www:

mv /home/user/www/* /var/www/

Korrigieren Sie nun die Berechtigungen und den Besitz des Verzeichnisses /var/www.

chown -R www-data:www-data /var/www
chmod -R 775 /var/www
find /var/www -type d -print0 | xargs -0r chmod g+s
adduser user www-data

Wenn sich der Benutzer das nächste Mal anmeldet (oder ausführt newgrp www-data), sollte er Schreibberechtigung für /var/www haben.

Übrigens, wenn Sie es „Benutzern“ leicht machen möchten, die Webdateien zu finden, erstellen Sie einfach einen symbolischen Link in ihrem Home-Verzeichnis:

 ln -s /var/www/ /home/user/

Antwort2

Für den Lese-/Schreibzugriff ist es wichtig, auch Ausführungsberechtigungen für übergeordnete Verzeichnisse zu haben (in Ihrem Fall /home/user). Überprüfen SieDasAntwort.

Sie verwenden das Stammverzeichnis unter /home/user/www (das unterBenutzerDie Berechtigungen für das Home-Verzeichnis und die Home-Verzeichnisse sind zum Zeitpunkt der Erstellung standardmäßig auf 700 festgelegt. Versuchen Sie beispielsweise, das Root-Verzeichnis für Apache woanders zu erstellen./apache/www

Antwort3

Wenn Ihre Distribution beispielsweise SELinux oder App Armor verwendet, müssen Sie dem Apache-Prozess wahrscheinlich Zugriff gewähren, damit dieser auf den Home-Verzeichnisbereich „zugreifen“ darf.

SELinux-Boolesche Werte

httpdMit diesem Befehl können Sie die Liste der mit (Apache) verbundenen Booleschen Werte anzeigen .

$/usr/sbin/getsebool -a | grep httpd
allow_httpd_anon_write --> off
allow_httpd_bugzilla_script_anon_write --> off
allow_httpd_mod_auth_pam --> off
allow_httpd_nagios_script_anon_write --> off
allow_httpd_squid_script_anon_write --> off
allow_httpd_sys_script_anon_write --> off
httpd_builtin_scripting --> on
httpd_can_network_connect --> off
httpd_can_network_connect_db --> off
httpd_can_network_relay --> off
httpd_disable_trans --> off
httpd_enable_cgi --> on
httpd_enable_ftp_server --> off
httpd_enable_homedirs --> on
httpd_rotatelogs_disable_trans --> off
httpd_ssi_exec --> off
httpd_suexec_disable_trans --> off
httpd_tty_comm --> on
httpd_unified --> on

Dieser Boolesche Wert muss aktiviert werden:

httpd_enable_homedirs --> on

Kontextbeschriftungen

Zusätzlich müssen Sie jedem Verzeichnis einen SELinux-Kontext (ein Label) hinzufügen, der SELinux im Wesentlichen mitteilt, dass auf dieses Verzeichnis oder diese Datei von jedem Dienst/Daemon zugegriffen werden darf, der diesem Label zugeordnet ist. Apache (httpd) verwendet dieses Label:

httpd_sys_content_t:s0

Sie müssen also diesen Befehl ausführen, chconum dieses Label den Dateien/Verzeichnissen unter /home hinzuzufügen. Fügen Sie das Label nur dem Verzeichnis hinzu, aus dem Apache die Dateien bereitstellt.

$ chcon -R -t httpd_sys_content_t /home/user/www

Sie können dies bestätigen, indem Sie -Zauf wechseln ls. Dadurch werden Ihnen die Kontextbeschriftungen angezeigt.

$ ls -Z /var/www/manual/
drwxr-xr-x  root root system_u:object_r:httpd_sys_content_t:s0 mod

Verweise

verwandte Informationen