
Ich habe ein Programm, das einige Dinge tut. Es läuft unter Benutzer A.
Ein sehr kleiner Teil davon besteht darin, eine Datei in ein Verzeichnis im Home-Verzeichnis von Benutzer B zu übertragen. Die Übertragung erfolgt durch einen API-Aufruf der Sprache, in der sie geschrieben ist, und nicht durch einen Systemaufruf eines Shell-Befehls.
Jetzt sehe ich mehrere Möglichkeiten, diese Übertragung durchzuführen.
- Führen Sie das Programm als Root aus.
- Setzen Sie A und B in dieselbe Gruppe und passen Sie die Verzeichnis-Eigentümer an
- sudo das Programm
- Machen Sie den Schritt mit einem Systemaufruf und sudo that
- Legen Sie die Datei lokal in A ab und führen Sie die Übertragung extern durch (lagern Sie das Problem aus).
- ACL das Verzeichnis von B
- ...
Ich denke, die Anforderung ist üblich, da das Ausführen eines Programms über Root geschmacklos ist. Was wäre die üblichste Art, damit umzugehen?
BEARBEITEN
Das Programm von A erzeugt die Datei. B sollte sie lesen und löschen können.
Antwort1
Wenn es wichtig ist, die anderen Dateien von Benutzer A nicht zu sehen, erstellen Sie ein separates gemeinsames Verzeichnis, in dem beide Benutzer Lese- und Schreibrechte haben, und legen Sie die Dateien dort ab.
Oder Sie können die Datei, sobald sie erstellt wurde, mit inotifywatch und chown nach B kopieren/verschieben, hier ist ein Beispiel, legen Sie es in cron
Kopieren Sie die Dateien automatisch zum Ziel, sobald sie erstellt wurden