Linux, Apache, Git und Benutzerrechte

Hallo,

ich habe gerade einen Server aufgesetzt. Da dieser Live ist möchte ich größtmögliche Sicherheit dadrin haben.

Meine Seiten werden per nächtlichem Cron vom Git gezogen. Dies kann ich natürlich als root laufen lassen, jedoch bin ich mir da nicht sicher über die Schreibrechte auf manche Ordner und habe noch ganz andere Sorgen:

  • Pull mit einem SSH-Key den der Benutzer www-data nicht erreichen kann
  • Lese- und Schreibrechte für www-data erhalten

Reicht es da den Cron per root laufen zu lassen, damit der ssh-key woanders ist und im selben Atemzug chown und chgrp rekursiv drüber laufen zu lassen? Wie macht ihr das?
 

ikosaeder

Teekannen-Agnostiker
Das klingt soweit ganz gut. Du kannst auch einen Benutzer analog zu nobody einrichten z.B. als gituser und für den keine Loginshell vorsehen in der passwd. Der bekommt Schreibrechte auf www-data indem er z.b. mit in der Gruppe www-data ist. gituser zieht jetzt die Daten, schreibt sie in den www. Bereich und ändert mit chown den Benutzer.
Um den cron einzurichten musst du als root nur su gituser eingeben, und kannst dann mit crontab -e eine User spezifische Crontab erzeugen.
Solange du dich nicht mit root beim gitRepository anmeldest, sehe ich keinen Grund warum das Skript nicht auch als Benutzer root laufen darf.
Das Skript würde in etwa so aussehen:
Code:
git clone ssh://user@host.org/project.git
cp File www-data
chmod -R 644  www-data/File
chown -R wwwuser www-data/File
chgroup -R wwwgroup www-data/File
exit
egal ob als root oder als user. Lediglich die Rechte für user müssen angepasst werden, damit der cp Befehl correct ausgeführt wird. Wenn du Unterordner hast, musst du das Skript natürlich entsprechend anpassen, sonst verhindert chmod 664 den Zugriff auf die Verzeichnisse.