Leap 16.0 installiert - Webserver für lokale Projekt vergessen zu installieren

Korrektur:

Ich habe noch mal kontrolliert, ob der “fehlerfrei arbeitende Rechner” wirklich fehlerfrei arbeitet in Bezug auf das beschriebene Problem, und dem ist leider nicht so.

Auch dieser Rechner zeigt

ls -alZ test-*
-rw-r--r--. 1 user1 user1 unconfined_u:object_r:user_home_t:s0           21  5. Mai 16:17 test1.html
-rw-r--r--. 1 user1 user1 unconfined_u:object_r:httpd_sys_content_t:s0   23  5. Mai 16:22 test2.html

Sorry.

Gibt es denn eine Möglichkeit, dass Dateien, die nach htdocs verschoben werden, im Browser ohne Error 403 funktionieren, auch wenn man sie nicht explizit sich in htdocs befindend anlegt?

Wird folgender KI-Vorschlag von den Experten in diesem Forum unterstützt?

Temporär:

sudo chcon -t httpd_sys_content_t /srv/www/htdocs

Dauerhaft:

sudo semanage fcontext -a -t httpd_sys_content_t "/srv/www/htdocs"
sudo restorecon -Rv /srv/www/htdocs

Ich bin wie folgt vorgegangen (als “root”):

semanage fcontext -a -t httpd_sys_content_t "/srv/www/htdocs(/.*)?"

Und für die Bereiche in meiner dokuwiki-Installation, die Schreibzugriff erfordern:

semanage fcontext -a -t httpd_sys_rw_content_t "/srv/www/htdocs/dokuwiki/conf(/.*)?"

und abschließend

restorecon -Rv /srv/www/htdocs

Zusätzlich erforderten einige meiner WEB-Seiten noch das Setzen von “Booleans” wie z.B. httpd_can_network_connect.

Bei mir kommt auf beiden Systemen eine Fehlermeldung nach Absetzen des Komandos als Root:

$ semanage fcontext -a -t httpd_sys_content_t "/srv/www/htdocs(/.*)?"
ValueError: Dateispezifikation /srv/www/htdocs(/.*)? kollidiert mit Äquivalenzregel '/srv/www /var/www'; versuchen Sie, stattdessen '/var/www/htdocs(/.*)?' hinzuzufügen

Auf meinem System existiert /var/www/ auch nicht.

Ich bin bei der Recherche übrigens auf ein hilfreiches Buch gestoßen: Linux Kommandoreferenz

Wenn ich den Pfad wie vorgeschlagen ändere, wird es zwar gemacht…

semanage fcontext -a -t httpd_sys_content_t "/var/www/htdocs(/.*)?"
restorecon -Rv /srv/www/htdocs

…aber der nächste neue File, der in das Verzeichnis verschoben wird, hat wieder das gleiche Problem, d. h. man muss die obige Prozedur wieder laufenlassen.

Hast Du apache danach neu gestartet?

systemctl restart apache2

siehe auch: Beispiel aus der offiziellen openSUSE Dokumentation

Verschiebst (mv) oder kopierst (cp) Du die Datei in das Verzeichnis?

Restart Apache2 bringt nichts.

Ich verwende mv.

touch test7.html
sudo mv test7.html /srv/www/htdocs

$ ls -alZ test7*
-rw-r--r--. 1 user1 user1 unconfined_u:object_r:user_home_t:s0            0  6. Mai 17:28 test7.html

$ semanage fcontext -a -t httpd_sys_content_t "/var/www/htdocs(/.*)?"
File context for /var/www/htdocs(/.*)? already defined, modifying instead

$ restorecon -Rv /srv/www/htdocs
Relabeled /srv/www/htdocs/test7.html from unconfined_u:object_r:user_home_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0

$ ls -alZ test7*
-rw-r--r--. 1 user1 user1 unconfined_u:object_r:httpd_sys_content_t:s0 0  6. Mai 17:28 test7.html


Bei mv behält die Datei ihren ursprünglichen Context.

Neu erstellte Dateien (z.B. mit Editor oder per cp) erhalten den Context des Verzeichnisses in dem sie erstellt werden.

Nach mv ist immer ein restorecon erforderlich.

Zumindest ist das auf meinem System so der Fall.

Wenn ich cp verwende, ist das in der Tat nicht der Fall. Gut, verwende ich cp.