Ich möchte, dass ein bestimmter Benutzer den Besitzer und die Gruppe aller Inhalte eines bestimmten Verzeichnisses und nur dieses Verzeichnisses rekursiv ändert. 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 Eigentümer des Ziels dies selbst erledigt, ohne dass dieser Benutzer über weitere Berechtigungen verfügt, die dann erforderlich sind. Nehmen wir an, der ursprüngliche Besitzer ist "Headsman", und der endgültige Besitzer sollte "Publikum" sein. Kein Benutzer ist in derselben Gruppe.

sudo chown -R audience:watchers /usr/files/pathofdir Ist nicht ganz richtig, weil ich nicht möchte, dass das Publikum unbegrenzte Befugnisse hat, um Chown zu verwenden. Meine erste Vermutung war, zu versuchen, „audience“ zu /etc/sudoers mit Erlaubnis zu /usr/bin/chown und /usr/bin/chgrp hinzuzufügen. Aber das ist zu viel Autorität.

Ich dachte daran, ein Skript ausschließlich für das Publikum zu schreiben, aber ich weiß nicht, wie ich diesem Skript die richtigen Berechtigungen geben soll und nicht mehr.

Was ist ein guter Weg, dies zu tun?

answer

Sie können einen vollständigen Befehl in angeben sudoers, mit Argumenten und allem, in diesem Fall hat der Benutzer die Berechtigung, den angegebenen Befehl nur mit den angegebenen Argumenten auszuführen. Dieser sudoersEintrag sollte also Ihr Problem lösen:

audience  ALL=/usr/bin/chown -R audience\:watchers /usr/files/pathofdir

Ich denke jedoch, dass Sie ACLs überprüfen sollten, da ich vermute, dass Ihr Problem mit der Verwendung einer Standard-ACL für das Verzeichnis einfacher gehandhabt werden kann. Siehe diesen Beitrag für ein Beispiel.

@Lasek wies darauf hin, dass ich wahrscheinlich ACLS verwenden wollte. Das 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 kürzere Syntax, aber dies ist meine erste Verwendung vonsetfacl