Hi Gruppe!
Ich habe etliche Webseiten, die sich nicht gegenseitig hacken dürfen. So sieht meine Traum-Konfiguration aus:
- Webseiten laufen unter PHP oder Node.JS. - Ich kann mit meinem Benutzer alle Webseiten bearbeiten, ohne dauernd chown ausführen zu müssen. - Ich habe vollen SSH-Zugriff auf alle Webseiten. - Kein safe_mode, da es den bald nicht mehr gibt.
Extra-Traum: Ich kann Leuten SSH-Zugriff auf einzelne Webseiten geben.
Geht das irgendwie? Ich weiß, das ist ein unnötiges Sandboxing, aber es sollen einfach nicht ein altes Forum und eine Wordpress-Seite gegenseitigen Zugriff haben.
Viele Grüße Thomas
Hi Thomas,
On Mon 04.11.2013 17:31:23, Thomas Schmidt wrote:
Ich habe etliche Webseiten, die sich nicht gegenseitig hacken dürfen.
Apache2 mit mod_itk (unter Debian).
So sieht meine Traum-Konfiguration aus:
- Webseiten laufen unter PHP oder Node.JS.
mod_itk funzt super mit php, hab ich am laufen.
- Ich kann mit meinem Benutzer alle Webseiten bearbeiten, ohne dauernd
chown ausführen zu müssen.
Jeder Apache-Request läuft mit seinem eigenen User und Gruppe, aber du bist einfach in allen Gruppen. Umask muss dann nur passend gesetzt sein.
- Ich habe vollen SSH-Zugriff auf alle Webseiten.
- Kein safe_mode, da es den bald nicht mehr gibt.
AFAIK kein Problem.
Extra-Traum: Ich kann Leuten SSH-Zugriff auf einzelne Webseiten geben.
Geht auch, der jeweilige SSH-User ist auch Mitglied der richtigen Gruppe.
Geht das irgendwie? Ich weiß, das ist ein unnötiges Sandboxing, aber es sollen einfach nicht ein altes Forum und eine Wordpress-Seite gegenseitigen Zugriff haben.
Ich finde es nicht unnötig, sondern sehr sinnvoll.
Ansonsten gibt es noch immer die Möglichkeit, alle Webseiten via git zu deployen. Ich mach das für alle Blogofile-Blogs und fast alle Seiten die direkt via PHP laufen so, mit Ausnahme von allem was eine Datenbank braucht. Bringt den riesigen Vorteil, dass man nie SSH braucht, sondern einfach gen (in meinem Fall) Gitlab pusht, und der Rest von einem Webhook erledigt wird.
Gruß, Andre
Hi!
Apache2 mit mod_itk (unter Debian).
Vielen Dank Andre! Das funktioniert super.
Ich erstelle die User der Webseiten so:
useradd -d /www/blog -U blog
Wenn ich will, dass der User SSH-Zugriff hat, mache ich einfach
passwd blog
Ist das so weit richtig?
Jeder Apache-Request läuft mit seinem eigenen User und Gruppe, aber du bist einfach in allen Gruppen. Umask muss dann nur passend gesetzt sein.
Wie funktioniert das genau? Welche Rechte und User müssen vergeben werden? Der Blog liegt in /www/blog/html. Nur der User 'blog' soll in /www/blog lesen und schreiben können. Außerdem soll 'thomas' in /www/blog/html als 'blog' schreiben können, damit die Seite in einem Guss nur einem User gehört und ich trotzdem mit einem SSH-Zugang alles administrieren kann.
Thomas
Moin Thomas,
On Tue 19.11.2013 16:20:24, Thomas Schmidt wrote:
Apache2 mit mod_itk (unter Debian).
Vielen Dank Andre! Das funktioniert super.
Ich erstelle die User der Webseiten so:
useradd -d /www/blog -U blog
Wenn ich will, dass der User SSH-Zugriff hat, mache ich einfach
passwd blog
Ist das so weit richtig?
Das ist eine Möglichkeit, wobei ich nicht direkt den Apache-User zum login freigeben würde. Damit eröffnest du dir die Möglichkeit, das dein User via SSH ankommt und z.B. einen gerade für seine Seite Requests abarbeitenden Apache tötet oder ähnliches.
Ich würde daher ein weiteres Set User anlegen, die für den menschlichen Login bestimmt sind, aber dieselbe Gruppe wie der Apache-User haben. Dann musst du nur noch mit chmod g+rw(x)s sicherstellen das die Dateien für deinen Login-User bearbeitbar sind und es sollte alles gehen.
Jeder Apache-Request läuft mit seinem eigenen User und Gruppe, aber du bist einfach in allen Gruppen. Umask muss dann nur passend gesetzt sein.
Wie funktioniert das genau? Welche Rechte und User müssen vergeben werden? Der Blog liegt in /www/blog/html. Nur der User 'blog' soll in /www/blog lesen und schreiben können. Außerdem soll 'thomas' in /www/blog/html als 'blog' schreiben können, damit die Seite in einem Guss nur einem User gehört und ich trotzdem mit einem SSH-Zugang alles administrieren kann.
Das folgende sollte dafür reichen:
chown blog:blog-owners -R /www/blog chmod g+rws -R /www/blog find /www/blog -type d -exec chmod g+x {} ; adduser thomas blog-owners
Damit darf der Apache (user "blog") alles mit den Dateien anstellen, da er Eigentümer ist, und der "einfache User" (du, aka "thomas") auf Grund deiner Gruppenmitgliedschaft alles ändern usw (g+rw(x)), sowie sollten alle Dateien unterhalb von /www/blog automatisch "blog:blog-owners" gehören.
Ein kleiner Fallstrick ist aber noch dabei: manche FTP/SFTP/SCP-Clients scheinen das SetUID-Bit zu ignorieren, dann musst du das händisch wieder gerade ziehen.
Desweiteren sollte in dem Verzeichnis nichts liegen, was als Binary taugt, und von "blog" nicht ausgeführt werden sollte, denn das SetUID-Bit würde jedem User des Systems erlauben dieses Binary auch als Blog auszuführen. Aber da wir über eine WWW-Root reden sollten da wohl eh keine Binaries zu finden sein, oder?
Gruß, Andre
lug-dd@mailman.schlittermann.de