Ich brauche wget
etwas (führt zu einer komprimierten Datei in CWD), dann muss ich es extrahieren, dann etwas kopieren / verschieben / modifizieren und vielleicht schließlich ein Skript ausführen (aus dem heruntergeladenen Archiv).
Jetzt führen alle diese Aufgaben entweder direkt ( wget
, extrahieren usw.) oder indirekt (Ausführen des Skripts) zum Erstellen von Dateien und Verzeichnissen (alle im aktuellen Arbeitsverzeichnis). Ich mache all diese Sachen als root
(keine Möglichkeit, es mit dem endgültigen, gewünschten Benutzer zu tun).
Das Problem ist: Alles, was im Prozess erstellt wird, gehört root oder dem sudo-Benutzer. Wenn ich fertig bin (und manchmal in der Mitte Art und Weise), ich habe eine Reihe von zur Ausgabe chmod
und chown
Befehle richtig zu machen Dinge.
Jetzt wäre es schön, wenn Sie dem System irgendwie mitteilen könnten, dass "Sie von nun an alle Dateien oder Verzeichnisse, die Sie erstellen, wenn Sie Befehle als root ausgeben, mit diesem und jenem Besitz und diesen Berechtigungen erstellen würden".
chown
Dateien an einen anderen Benutzer senden, und das Festlegen einer solchen Standardeinstellung kann zu Benutzerfehlern führen und anderen Benutzern Berechtigungen erteilen, ohne dass derroot
Benutzer dies merkt.Es gibt einen anderen Weg, ganz elegant finde ich. Installation verwenden (1)
Zum Beispiel benötigt zabbix-agentd einen Unterordner in / var / run, aber neuere Distributionen verwenden tmpfs für / var / run, sodass das Verzeichnis Neustarts nicht überlebt. Ich habe es gelöst, indem ich eine Datei / etc / sysconfig / zabbix-agentd erstellt habe, die Folgendes enthält:
quelle
-m 0700
zum Beispiel. Die antwort.install
das Verzeichnis erstellt und dann der Eigentümer / die Gruppe geändert wird. Es gibt also eine kurze Zeit, in der das Verzeichnis nicht den angegebenen Eigentümer / die angegebene Gruppe hat. In manchen Zusammenhängen kann es wichtig sein.Auf Unix-ähnlichen Systemen gehören neu erstellte Dateien und Verzeichnisse dem Eigentümer des Prozesses, der sie erstellt hat. Standarddienstprogramme haben normalerweise keine Möglichkeit, den Eigentümer der erstellten Dateien zu ändern.
Variablen mit UID und GID des ursprünglichen Benutzers
Wenn Sie einige Befehle wiederholt ausführen, können Sie die Variablen verwenden
$SUDO_UID
und$SUDO_GID
auf den Benutzer verweisen, der Folgendes aufgerufen hatsudo
:Die Liste der erstellten Dateien und Verzeichnisse wird automatisch abgerufen
Wenn Sie die Liste der erstellten (und möglicherweise geänderten) Dateien und Verzeichnisse automatisch erhalten möchten, können Sie Ihre Befehle unter
strace
Überwachung ausführen, die auf demptrace()
Syscall basiert :oder Sie können zum Beispiel Installwatch verwenden, die auf dem
LD_PRELOAD
Mechanismus basiert .Ideen für die weitere Arbeit
Basierend auf den oben genannten Methoden ist es möglich, ein Tool zu erstellen, das automatisch den Eigentümer ändert und möglicherweise auf die Rechte der erstellten / geänderten Dateien zugreift. Die Verwendung könnte so einfach sein wie:
quelle