ubuntuusers.de

Suche best practice zu "User/DAU darf /var/www/html/xxx selbst verwalten

Status: Gelöst | Ubuntu-Version: Ubuntu 14.04 (Trusty Tahr)
Antworten |

rdbhdt

Anmeldungsdatum:
31. August 2016

Beiträge: Zähle...

Hi zusammen.

Fragestellung:

Auf einer Subdomain von mir, soll ein weiterer Anwender eine eigene Webseite bekommen, die er selbst verwaltet. Von der ersten index.htm bis zum CMS. Der Anwender soll selbst seine Daten per sftp oder FTP hoch laden. Ich stelle nur den Server zu verfügung, der Anwender die Inhalte. Wie gestallte ich die Benutzer/Gruppenberechtigungen auf den Ordnern und Datei um Documentenroot, sodass der Anwender die Daten selbst Hochladen kann und der Webserveruser www-data ebenfalls zugreifen darf.

Situation:

  • Ich habe einen Apache2 Webserver mit einer SubDomain. Das Docummentenroot der Subdomain steht auf /var/www/html/xxx.

  • Der Anwender hat einen User angelegt im Linux

  • Der User in meinem Beispiel heist xxx

  • Der Anwender ist fähig seine Webseite in /var/www/html/xxx hoch zu laden.

  • Wenn der Anwender Daten hoch läd kommen sie mit folgender Berechtigung an:

-rwxrwx--- 1 xxx xxx       45 Aug 31 12:45 index.htm

Wenn der Apache-dienst per user www-data zugreifen will, darf dieser das nicht. Ich müsste entweder den www-data in die Gruppe xxx aufnehmen, oder es ermöglichen, dass die Dateien mit anderen Berechtigungen hoch geladen werden. Das es z.B. so hoch geladen wird:

-rwxrwx--- 1 xxx www-data       45 Aug 31 12:45 index.htm

Nehme ich den www-data in die Gruppe xxx auf, sodarf der Webserver theoretisch auch auf das Homeverzeichniss des Anwenders /home/xxx/ zugreifen, das gefällt mir nicht.

Gibt es für meinen Fall ein best practice? Wie würde ein erfahrener Webadmin so etwas angehen?

Danke für eure Tipps.

Grüße Joe

Into_the_Pit Team-Icon

Ehemalige
Avatar von Into_the_Pit

Anmeldungsdatum:
25. Juni 2008

Beiträge: 9490

Wohnort: Bochum

Hallo und willkommen.

rdbhdt schrieb:

Gibt es für meinen Fall ein best practice? Wie würde ein erfahrener Webadmin so etwas angehen?

Man könnte das Set-GID-Recht auf den Ordner setzen, so wird die Gruppe an alle Dateien und Unterordner vererbt.

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

Willkommen im Forum!

rdbhdt schrieb:

Auf einer Subdomain von mir, soll ein weiterer Anwender eine eigene Webseite bekommen, die er selbst verwaltet. Von der ersten index.htm bis zum CMS. Der Anwender soll selbst seine Daten per sftp oder FTP hoch laden. Ich stelle nur den Server zu verfügung, der Anwender die Inhalte. Wie gestallte ich die Benutzer/Gruppenberechtigungen auf den Ordnern und Datei um Documentenroot, sodass der Anwender die Daten selbst Hochladen kann und der Webserveruser www-data ebenfalls zugreifen darf.

Also Grundsätzlich gibt es bei so einem Setup kein "richtig" und "falsch", denn es kommt immer auf die Anforderung und die Umgebung an. Von daher ist es sehr zu begrüßen, dass du dir im Vorfeld Gedanken machst.

  • Ich habe einen Apache2 Webserver mit einer SubDomain. Das Docummentenroot der Subdomain steht auf /var/www/html/xxx

Wenn ich einem Nutzer einen Subdomain zur Verfügung stellen sollte, würde ich das DocumentRoot in das Home-Verzeichnis des Users packen, also beispielsweise /home/xxx/www oder /home/xxx/public_html (wobei letzteres eher auf mod_userdir hindeuten würde, was du aber nicht brauchst). Damit kann der User nicht nur Dateien in das DocumentRoot schreiben, sondern auch außerhalb ablegen (das ist beispielsweise für Sachen wichtig, die nichts im DocumentRoot zu suchen haben, weil sie nicht direkt auslieferbar sein sollen). Mit welchem Verzeichnis du aber letztlich arbeitest, ist egal.

Wenn der Apache-dienst per user www-data zugreifen will, darf dieser das nicht. Ich müsste entweder den www-data in die Gruppe xxx aufnehmen, oder es ermöglichen, dass die Dateien mit anderen Berechtigungen hoch geladen werden. Das es z.B. so hoch geladen wird:

Also man kann da etwas mit ACLs stricken, ich würde allerdings einfach den User www-data mit in die User-Gruppe xxx stecken. Das sollte sicherheitstechnisch kein Problem sein.

Nehme ich den www-data in die Gruppe xxx auf, sodarf der Webserver theoretisch auch auf das Homeverzeichniss des Anwenders /home/xxx/ zugreifen, das gefällt mir nicht.

Das stimmt, allerdings ist das die komfortabelste Lösung, es sei denn, der User hat dort wirklich irgendwelche sensible Daten liegen. Wenn es den Account aber primär dazu gibt, die Homepage bereitzustellen, ist da ja wurst.

Ein Problem hast du noch nicht angesprochen: Webserver- bzw. PHP-User. In der Standardinstallation von Apache2 und PHP wird PHP als Apache-Modul ausgeführt, das bedeutet, es läuft direkt mit den Rechten des Webservers (www-data). Das ist aber ungünstig, da der Webserver ja sowohl auf deine eigenen Daten, als auch auf die Daten des zusätzlichen Users zugreifen kann. Daher ist es sinnvoll, für diesen VHost PHP als separater User ausführen zu lassen.

Die Umstellung so eines Setups ist aber nicht ganz trivial. Es gibt mehrere Möglichkeiten das zu realisieren. Ich selbst habe noch die fcgid+suexec-Variante installiert. Die ist etwas träge aber funktioniert (Installationsanleitung). Neuer, und AFAIK auch etwas performanter ist PHP-FPM zu nutzen. Hier ist das für die Benutzung mit nginx erklärt, mit dem Apache geht das aber auch.

rdbhdt

(Themenstarter)

Anmeldungsdatum:
31. August 2016

Beiträge: 2

Hi zusammen,

danke für die schnellen Antworten.

  • zu Into_the_Pit:

der Tipp zu Set-GID gefällt mir gut, weil das Bit auf dem Ordner setzten kann und bei allem was drunter geschiet, hat die Gruppe www-data zugriff. (Wenn ich es richtig gesehen habe, muss ich das Set-GID Bit nicht erst aktivieren wie ich es bei den ACLs bei ext4 machen müsste.)

  • zu misterunknown:

Du spricht das Einrichten eines eigenen Benutzers für PHP für jeden einzelnen vhost an. Uhi, soweit habe ich noch nicht gedacht. Deinen Gedankengang kann ich nachfollziehen, nur muss ich mich erst mal einlesen. Ich war ganz froh, das ich einen weiteren Virtuellen Host angelegt bekommen habe und das Letsencrypt Zertifikat angepassen konnte. Da dieser Webserver im Internet steht, bin ich etwas vorsichtiger und möchte verstehen was ich mache bevor ich das angehe. Zumal die Kiste ein private-produktives Projekt ist ☺

Ich denke, der Thread und ihr hab mir erstmal geholfen. Die PHP Änderung gehe ich in einem nächsten Schritt. Da mache ich ggf. einen eigenen Thread auf, damit sich die Theman nicht mischen.

Dankeschön und Grüße Joe

Antworten |