如何自动更改添加到特定目录的任何文件的权限和所有者:组?

如何自动更改添加到特定目录的任何文件的权限和所有者:组?

我运行一个 unRAID 服务器(unRAID 基于 Slackware),并且想找到一种方法来自动更改添加到特定目录的每个文件的权限和所有权。

具体来说,我想.torrent使用 SFTP 将文件从我的笔记本电脑上传到我服务器上的特定“监视”文件夹。问题是监视该目录的 rTorrent docker 容器无法加载上传的.torrent文件,因为它们的owner:user组与容器的组不同——root:root对于.torrent通过 SFTP 发送的文件和nobody:users容器来说都是如此。

我怀疑文件权限也可能是一个问题,因为上传的.torrent文件有0644权限,我相信它们需要有0755权限。我已经能够.torrent通过手动 chown tonobody:users和 chmod to让 rTorrent 自动加载这些文件0755,所以我知道 Autowatch 可以在这些更改后正常工作。

因此,我希望有一种简单的方法可以自动 chown 和 chmod 添加到此目录的每个文件。有什么想法吗?

答案1

您可以使用内置工具通过另外两种方式实现目标

答案2

正如我昨天在 SO 的评论中提到的那样,使用 inotify 来实现这一点相当简单。

#!/bin/sh
if [ -x /tmp/watchy ]; then
  rm -rf /tmp/watchy
fi
while inotifywait  -e close_write -o /tmp/watchy --format %w%f  /path/to/watch
do
  found=$( tail -n1 /tmp/watchy | grep -E '.torrent$' ) && chown root $found
done

答案3

这可能会有帮助:https://techarena51.com/blog/inotify-tools-example/

当目录更新时,intotify 可以让你触发一个脚本。该脚本可以动态管理你的 chown 和 chmod。

相关内容