Come modificare automaticamente le autorizzazioni e il proprietario: gruppo su qualsiasi file aggiunto a una directory specifica?


2

Corro un server unRAID (unRAID è basato su Slackware) e vorrei trovare un modo per cambiare automaticamente le autorizzazioni e la proprietà di ogni file aggiunto a una directory specifica.

In particolare, vorrei caricare i .torrentfile dal mio laptop in una specifica cartella "Watch" sul mio server utilizzando SFTP. Il problema è che il contenitore finestra mobile rTorrent che sta guardando quella directory non è in grado di caricare i .torrentfile caricati perché il loro owner:usergruppo è diverso da quello del contenitore - root:rootper i .torrentfile inviati tramite SFTP e nobody:usersper il contenitore.

Ho il sospetto che anche le autorizzazioni dei file possano essere un problema in quanto i .torrentfile caricati hanno 0644autorizzazioni e credo che debbano avere 0755autorizzazioni. Sono stato in grado di ottenere rTorrent per caricare automaticamente questi .torrentfile manualmente chown nobody:userse chmod 0755, quindi so che Autowatch funziona con queste modifiche in atto.

Quindi, spero che ci possa essere un modo semplice per chown e chmod automaticamente ogni file aggiunto a questa directory. Qualche idea?

Risposte:


1

Hai un altro modo per raggiungere il tuo obiettivo con strumenti integrati

  • per prima cosa puoi usare ACL

    • Ecco alcuni riferimenti su come usare: https://www.computerhope.com/unix/usetfacl.htm
    • È possibile aggiungere l'ACL predefinito della cartella in cui vengono caricati i file dell'utente root: root con le autorizzazioni necessarie.
  • secondo (e più elegante secondo la mia opinione personale):



0

Come ho già detto nel mio commento su SO ieri, questo è abbastanza banale usando 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

Molte grazie. Se volessi che lo script fosse sia chmod che chown, lo avrei modificato in questo modo? #!/bin/sh if [ -x /tmp/watchy ]; then rm -rf /tmp/watchy fi while inotifywait -e moved_to -o /tmp/watchy --format %w%f /mnt/cache/Downloads/watched do found=$( tail -n1 /tmp/watchy | grep -E '.torrent$' ) && chown nobody:users $found && chmod 0755 $found done
giovedì,

Sì, quello farebbe il lavoro.
tink

1
Ho dovuto modificare l' close_writeevento inotifywait createper farlo funzionare con i file caricati, ma ora funziona alla grande. Ho anche aggiunto lo script come demone di avvio "User Script" (l'equivalente non pagato dell'aggiunta a /etc/rc.local) in modo che venga eseguito in background per tutto il tempo, poiché ho capito rapidamente che lo script si sarebbe interrotto non appena avessi chiuso il mio shell ssh sul server senza testa.
giovedì,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.