我想要特定用户递归更改特定目录的所有内容(且仅更改该目录)的所有者和组。该目录是一种“收件箱”,服务在其中写入文件和子目录。
目前,我有一个管理员sudo chown
,但我希望目标所有者自己执行此操作,而该用户不需要拥有任何超出要求的权限。假设原始所有者是“headsman”,最终所有者应该是“audience”。这两个用户都不在同一组中。
sudo chown -R audience:watchers /usr/files/pathofdir
不太正确,因为我不想让audience 拥有使用 chown 的无限权限。我的第一个想法是尝试将“audience”添加到 /etc/sudoers,并允许 /usr/bin/chown 和 /usr/bin/chgrp。但这个权限太大了。
我想过专门为观众编写一个脚本,但我不知道如何让该脚本具有正确的权限。
有什么好方法可以做到这一点?
答案1
您可以在 中指定一个完整命令sudoers
,包括参数和全部,在这种情况下,用户将有权仅使用指定的参数运行指定的命令。因此,此条sudoers
目应该可以解决您的问题:
audience ALL=/usr/bin/chown -R audience\:watchers /usr/files/pathofdir
但是,我认为您应该检查一下 ACL,因为我怀疑使用目录上的默认 ACL 可以更轻松地处理您的问题。请参阅这个帖子举个例子。
答案2
@Lasek 指出我可能想使用 ACLS。这似乎对我有用:
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
可能有更简洁的语法,但这是我第一次使用setfacl