Ich möchte, dass ein bestimmter Benutzer rekursiv den Besitzer und die Gruppe des gesamten Inhalts eines bestimmten Verzeichnisses ändert, und zwar nur dieses Verzeichnisses. Das Verzeichnis ist eine Art „Posteingang“, in den ein Dienst Dateien und Unterverzeichnisse schreibt.
Derzeit habe ich einen Administrator sudo chown
, aber ich würde es vorziehen, wenn der Zielbesitzer es selbst tun würde, ohne dass dieser Benutzer über mehr Berechtigungen verfügt als erforderlich. Nehmen wir an, der ursprüngliche Besitzer ist „headsman“ und der endgültige Besitzer sollte „audience“ sein. Keiner der Benutzer ist in derselben Gruppe.
sudo chown -R audience:watchers /usr/files/pathofdir
Das ist nicht ganz richtig, da ich nicht möchte, dass das Publikum uneingeschränkte Befugnisse zur Verwendung von chown hat. Meine erste Vermutung war, zu versuchen, "audience" zu /etc/sudoers hinzuzufügen, mit der Berechtigung für /usr/bin/chown und /usr/bin/chgrp. Aber das sind zu viele Befugnisse.
Ich habe darüber nachgedacht, ein Skript ausschließlich für das Publikum zu schreiben, aber ich weiß nicht, wie ich dafür sorgen kann, dass dieses Skript nur die richtigen Berechtigungen hat und nicht mehr.
Wie kann dies am besten erreicht werden?
Antwort1
Sie können in einen vollständigen Befehl sudoers
mit allen Argumenten angeben. In diesem Fall ist der Benutzer nur berechtigt, den angegebenen Befehl mit den angegebenen Argumenten auszuführen. Dieser sudoers
Eintrag sollte Ihr Problem also lösen:
audience ALL=/usr/bin/chown -R audience\:watchers /usr/files/pathofdir
Ich denke jedoch, dass Sie sich ACLs ansehen sollten, da ich vermute, dass Ihr Problem mit der Verwendung einer Standard-ACL für das Verzeichnis leichter zu lösen ist. Siehedieser Beitragzum Beispiel.
Antwort2
@Lasek wies darauf hin, dass ich wahrscheinlich ACLS verwenden wollte. Das hier scheint bei mir zu funktionieren:
sudo setfacl -RPdm user:audience:rwX /usr/files/pathofdir
sudo setfacl -RPdm group:watchers:rwX /usr/files/pathofdir
sudo setfacl -RPm user:audience:rwX /usr/files/pathofdir
sudo setfacl -RPm group:watchers:rwX /usr/files/pathofdir
Es gibt wahrscheinlich eine prägnantere Syntax, aber dies ist mein erster Einsatz vonsetfacl