Ich versuche, Capistrano einzurichten, um unsere Bereitstellungen durchzuführen, aber ich stolperte nun über die scheinbar übliche Annahme von capistrano-Benutzern: Der Benutzer, den Sie mit dem entfernten Host verbinden, wird die Berechtigung haben, in das Verzeichnis der Bereitstellung zu schreiben .
Hier sind Administratoren häufige Benutzer mit einer einzigen Unterscheidung: Sie können sudo. Zuerst dachte ich, das wäre genug, da es einige Konfigurationen gibt, die sich auf sudo beziehen, aber das scheint nicht der Fall zu sein.
Gibt es einen Weg dazu? Es ist keine akzeptable Lösung, einen Benutzer zu erstellen, der von allen geteilt wird, die eine Bereitstellung durchführen.
Bearbeiten: Damit es klar wird, sollte keine Deploy-Aktion ohne Aufruf von sudo ausgeführt werden - das ist der Gateway-Punkt, der prüft, ob der Benutzer bereitstellen darf oder nicht, und es sollte ein obligatorischer Checkpoint sein .
Die derzeit akzeptierte Antwort passt nicht zu diesen Kriterien. Es geht um sudo, indem dem Benutzer zusätzliche Berechtigungen erteilt werden. Ich akzeptiere es trotzdem, weil ich zu dem Schluss gekommen bin, dass Capistrano in dieser Hinsicht grundlegend gebrochen ist.
Ich nehme an, dass Sie auf einer Linux-Distribution bereitstellen. Der einfachste Weg zur Lösung Ihres Problems besteht darin, eine Gruppe zu erstellen, z. B. deployers , und jeden Benutzer hinzuzufügen, der die Berechtigungen zum Bereitstellen für diese Gruppe haben soll. Nachdem die Gruppe erstellt wurde und sich die Benutzer in der Gruppe befinden, ändern Sie den Besitz und die Berechtigungen für den Bereitstellungspfad.
Abhängig von der Distribution wird die Syntax leicht variieren. Hier ist es für ubuntu / debian:
Erstellen Sie die Gruppe:
$ sudo groupadd deployers
Fügen Sie Benutzer zur Gruppe hinzu:
$ sudo usermod -a -G deployers daniel
Das letzte Argument dort ist der Benutzername.
Aktualisieren Sie als Nächstes den Besitz des Bereitstellungspfads:
$ sudo chown -R root:deployers /deploy/to/path/
Die Syntax für ist:. Hier nehme ich an, dass der Benutzer, der den Pfad besitzt, root ist. Aktualisieren Sie den Benutzer, der das Verzeichnis besitzen soll.
Ändern Sie abschließend die Berechtigungen für den Bereitstellungspfad:
$ sudo chmod -R 0766 /deploy/to/path/
Damit können Benutzer in der Gruppe deployers alle Dateien und Verzeichnisse unterhalb von /deploy/to/path
Tags und Links deployment capistrano