Bagaimana cara mengubah izin dan pemilik: grup secara otomatis pada file apa pun yang ditambahkan ke direktori tertentu?

2

Saya menjalankan server unRAID (unRAID didasarkan pada Slackware) dan ingin menemukan cara untuk secara otomatis mengubah izin dan kepemilikan setiap file yang ditambahkan ke direktori tertentu.

Secara khusus, saya ingin mengunggah .torrentfile dari laptop saya ke folder "Tonton" tertentu di server saya menggunakan SFTP. Masalahnya adalah wadah buruh pelabuhan rTorrent yang menonton direktori itu tidak dapat memuat .torrentfile yang diunggah karena owner:usergrup mereka berbeda dari wadah - root:rootuntuk .torrentfile yang dikirim melalui SFTP, dan nobody:usersuntuk kontainer.

Saya menduga bahwa izin file juga dapat menjadi masalah karena .torrentfile yang diunggah memiliki 0644izin dan saya percaya bahwa mereka harus memiliki 0755izin. Saya sudah bisa mendapatkan rTorrent untuk memuat .torrentfile - file ini secara otomatis dengan chown nobody:usersdan chmod secara manual 0755, jadi saya tahu bahwa Autowatch bekerja dengan perubahan-perubahan ini di tempat.

Jadi, saya berharap bahwa mungkin ada cara mudah untuk secara otomatis chown dan chmod setiap file yang ditambahkan ke direktori ini. Ada ide?

xthursdayx
sumber

Jawaban:

1

Anda memiliki dua cara lain untuk mencapai tujuan Anda dengan alat bawaan

  • pertama Anda bisa menggunakan ACL

  • yang kedua (dan lebih elegan menurut pendapat pribadi saya):

AtomiX84
sumber
0

Seperti yang saya sebutkan dalam komentar saya pada SO kemarin, ini cukup sepele menggunakan 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
Tink
sumber
Terima kasih banyak. Jika saya ingin skrip untuk chmod dan chown akankah saya memodifikasinya seperti ini? #!/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
xthursdayx
Ya, itu akan berhasil.
tink
1
Saya harus mengubah close_writeacara inotifywait createagar dapat berfungsi dengan file yang diunggah, tetapi sekarang berfungsi dengan baik. Saya juga menambahkan skrip sebagai daemon startup "Skrip Pengguna" (yang tidak ditambahkan setara dengan menambahkannya ke /etc/rc.local) sehingga skrip tersebut akan berjalan di latar belakang setiap saat, karena saya segera menyadari bahwa skrip akan berhenti berjalan segera setelah saya menutup ssh shell ke server tanpa kepala.
xthursdayx