Monit vs Source Control: Berechtigungsprobleme

533
Oddthinking

Ich versuche gut zu sein. Das ist mein großer Fehler.

Ich bin gut darin, Prozessüberwachung zu haben: Ich habe einige wichtige Prozesse überwacht und sie neu gestartet, wenn sie fehlschlagen.

Ich bin gut darin, nicht als root auszuführen: Monit betreibt einen Webserver, und ich möchte nicht, dass er als root ausgeführt wird, falls ein Sicherheitsproblem vorliegt. Ich habe also einen speziellen "Monit" -Benutzer, der über die erforderlichen Berechtigungen zum Starten und Stoppen einiger Schlüsselprozesse verfügt.

Der monit-Prozess liest aus einer ~ monit / .monitrc-Datei und monit besteht darauf, dass die Datei nur von dem Benutzer gelesen werden kann, unter dem sie ausgeführt wird, dh dem monit-Benutzer.

Ich bin gut darin, alle meine Betriebsskripts und Konfigurationen in der Quellcodeverwaltung (mercurial) zu speichern, sodass ich Maschinen mit denselben Spezifikationen neu erstellen kann. Ich oder andere Entwickler checken Änderungen an den Skripten der Quellcodeverwaltung ein und ziehe die Ergebnisse auf die Produktionsmaschine. Symbolische Links verweisen von ~ monit / .monitrc in das Quellcodeverwaltungsverzeichnis.

An diesem Punkt fällt jedoch alles zusammen: In das Quellcodeverwaltungsverzeichnis schreibt Mercurial, wenn ich die neuesten Skripts abrufe. Der Pull-Befehl wird jedoch nicht als Monit ausgeführt. Die Monitrc-Datei kann also von einem anderen Benutzer beschreibbar sein mag nicht und läuft nicht.

Ich kann die Monitrc-Datei vor und nach jedem Ziehen ständig choggen und chmodden, aber das ist mit Versäumnissen behaftet.

Ich kann nicht sehen, wie ich Monit bitten soll, sich in Sachen Besitz zu entspannen. Ich kann nicht sehen, wie klebrige Bits helfen.

Irgendwelche Vorschläge?

3

1 Antwort auf die Frage

0
terdon

Sie können immer hgein Skript erstellen, das aufruft hgund dann die Berechtigungen behandelt. So etwas wie

!#/bin/bash /usr/bin/hg.bin $@ && chmod 400 ~monit/monitrc && chown monit ~monit/monitrc 

Speichern Sie das Skript unter /usr/bin/hg(oder wo auch immer Ihre hgBinärdatei installiert ist) und

mv /usr/bin/hg /usr/bin/hg.bin chmod 744 ~monit/monitrc 

Angenommen, Ihr normaler Benutzer hat die Berechtigung, die Befehle chmodund chownauszuführen, die funktionieren sollten.