Soll ich die Bereitstellung mit demselben Benutzer durchführen, der die Website betreibt?

Soll ich die Bereitstellung mit demselben Benutzer durchführen, der die Website betreibt?

Ich habe eine Website, die von Nginx bereitgestellt wird, und habe vor Kurzem Travis-Builds und -Bereitstellungen dafür eingerichtet.

Nginx betreibt die Website als www-dataBenutzer. Ich habe einen Benutzer erstellt deploy, damit sich Travis über SSH beim Server anmelden und die Website bereitstellen kann. Bereitgestellte Dateien werden mit deploydem Benutzer als Eigentümer gespeichert, der sich von dem Benutzer unterscheidet, der die Website betreibt ( www-data).

Ich befürchte, dass ich mit diesem Setup Berechtigungsprobleme beim Ausführen der Website haben werde. Sollte ich denselben Benutzer www-data/ verwenden deploy, um die Website auszuführen und bereitzustellen? Werde ich bei diesem Ansatz Probleme haben, wenn ich dem Benutzer, der die Website betreibt, erlaube, sich remote über SSH anzumelden?

Bitte klären Sie mich diesbezüglich auf.

Antwort1

Tatsächlich sollten die Dateien nicht im Besitz von sein, www-datada dies bedeuten würde, dass Nginx sie ändern könnte, was in den meisten Fällen nicht erwünscht ist (es sei denn, es handelt sich um ein CMS, das sich selbst aktualisieren muss).

Daher sollten alle Dateien Eigentum von sein deploy.

Wenn es sich um ein CMS handelt und Sie in ein paar Ordner schreiben müssen, sollten diese wenigen (ein?) Ordner tatsächlich Eigentum von sein www-data. Das kann zu Problemen führen, wenn die Bereitstellung auch die allererste Installation durchführt. Bieten Sie dem Benutzer entweder an, einen manuellen Schritt auszuführen, oder lassen Sie diese Aufgabe ein spezielles Tool ausführen. Wenn es sich jedoch um eine einmalige Sache handelt, führen Sie es einfach manuell aus, es wird einfach genug sein (insbesondere, weil Sie nur einen solchen Ordner haben, oder?). Das CMS kann Ihnen auch mitteilen, ob ein solches Problem vorliegt, und anhalten, anstatt Seiten bereitzustellen. Auf diese Weise wissen Sie es sofort und können Probleme vermeiden, wenn Sie versuchen, eine Datei hochzuladen oder eine ähnliche Aktion auszuführen.

Natürlich gehören Dateien nicht jemandem, www-dataaber sie müssen für jemanden lesbar sein www-data. Machen Sie sie also entweder für andere lesbar ( -rw-r--r--) oder versuchen Sie, die Gruppe auf www-data( -rw-r-----) einzustellen. In den meisten Fällen habe ich Leute gesehen, die nicht einmal das Risiko eingehen, die Gruppe zu verwenden. Sie lassen einfach andere auf die Dateien zugreifen, weil das sicherer ist.

Dies bedeutet natürlich auch, dass Nginx keine Zugriffsrechte auf den deployBenutzer und die Gruppe hätte.

verwandte Informationen