Ich möchte einen Dienst mit einer systemd-Einheitendatei starten. Für diesen Dienst ist zum Starten ein Kennwort erforderlich. Ich möchte das Passwort nicht im Klartext in der systemd-Einheitendatei speichern, da es weltweit lesbar ist. Ich möchte dieses Passwort auch nicht interaktiv bereitstellen.
Wenn ich dafür ein normales Skript schreiben würde, würde ich die Anmeldeinformationen in einer Datei speichern, die root mit eingeschränkten Berechtigungen gehört (400 oder 600), und dann die Datei als Teil des Skripts lesen. Gibt es eine bestimmte systemd-artige Möglichkeit, dies zu tun, oder sollte ich einfach den gleichen Prozess wie in einem normalen Shell-Skript ausführen?
shell-script
permissions
systemd
password
SauceCode
quelle
quelle
Antworten:
Abhängig von Ihren Anforderungen gibt es hier zwei mögliche Ansätze. Wenn Sie bei Aktivierung des Dienstes nicht zur Eingabe des Kennworts aufgefordert werden möchten, verwenden Sie die
EnvironmentFile
Anweisung. Vonman systemd.exec
:Wenn Sie dazu aufgefordert werden möchten, verwenden Sie eine der
systemd-ask-password
Anweisungen. Vonman systemd-ask-password
:quelle
ps ajxewww
), sodass möglicherweise jemand dazu in der Lage ist nimm es von dort auf.EnvironmentFile
Der Eintrag mit einem absoluten Pfad zu einer Datei mit 400 Berechtigungen funktioniert gut.Ich kann eine zusätzliche Alternative anbieten, die Ihren Anforderungen entspricht, für die jedoch mehrere Voraussetzungen erfüllt sein müssen:
Die nächsten Schritte sind wie folgt:
Verwenden Sie
secret-tool
vonlibsecret
, um Ihr Passwort zu speichern. Zum Beispiel:Wenn Ihre ausführbare Datei das Lesen des Kennworts aus einer Umgebungsvariablen unterstützt, ist es besser:
Wenn Ihre ausführbare Datei das Kennwort als Argument akzeptiert, können Sie dennoch Folgendes verwenden
secret-tool
:Achtung : Das Kennwort ist beim Ausführen deutlich sichtbar,
systemctl --user status myUnit.service
da das Argument in der Befehlszeile ausgeführt wird. Dies bedeutet, dass dies auch für Benutzer sichtbar ist, dietop
oder ausführenps -aux
.quelle
Es gibt eine dritte Alternative dazu sowie den 2 Vorschlag von @jasonwryan.
Auszug aus der Antwort von Michael Hampton bei ServerFault - Wie wird die Umgebungsvariable im systemd-Dienst festgelegt?quelle