2

Я запускаю сервер unRAID (unRAID основан на Slackware) и хотел бы найти способ автоматически изменять разрешения и владельца каждого файла, добавляемого в определенный каталог.

В частности, я хотел бы загрузить файлы .torrent со своего ноутбука в определенную папку "Watch" на моем сервере с использованием SFTP. Проблема в том, что док-контейнер rTorrent, который наблюдает за этим каталогом, не может загрузить выгруженные файлы .torrent потому что их owner:user группа пользователей отличается от группы контейнера - root:root для файлов .torrent отправленных через SFTP, и nobody:users для контейнера.

Я подозреваю, что права доступа к файлам также могут быть проблемой, так как загруженные файлы .torrent имеют разрешения 0644 и я считаю, что они должны иметь разрешения 0755 . Мне удалось заставить rTorrent автоматически загружать эти .torrent файлы, вручную назначая их nobody:users и chmod на 0755 , поэтому я знаю, что Autowatch работает с этими изменениями на месте.

Итак, я надеюсь, что может быть простой способ автоматически chown и chmod для каждого файла, добавленного в этот каталог. Есть идеи?

3 ответа3

1

У вас есть еще два способа достичь своей цели с помощью встроенных инструментов

  • сначала вы можете использовать ACL

    • Вот некоторые ссылки, как использовать: https://www.computerhope.com/unix/usetfacl.htm
    • Вы можете добавить в ACL по умолчанию папку, в которую ваши файлы загружены пользователем root: root с необходимым разрешением.
  • второй (и, на мой взгляд, более элегантный):

    • Запустите контейнер док-станции rTorrent с UID, совпадающим с UID, принадлежащим файлам, которые я нахожу на этой странице, объясните это хорошо: https://www.computerhope.com/unix/usetfacl.htm
0

Это может помочь: https://techarena51.com/blog/inotify-tools-example/

Intify может позволить вам запустить скрипт при обновлении каталога. Скрипт может управлять вашим chown и chmod на лету.

0

Как я уже упоминал в своем вчерашнем комментарии к 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .