Linux bash 中非特权用户如何拥有仅一个特定目录的内容?

Linux bash 中非特权用户如何拥有仅一个特定目录的内容?

我想要特定用户递归更改特定目录的所有内容(且仅更改该目录)的所有者和组。该目录是一种“收件箱”,服务在其中写入文件和子目录。

目前,我有一个管理员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

相关内容