
Есть ли способ (с помощью acl) защитить содержимое папки? Пользователи должны создавать файлы внутри папки, но не перезаписывать/редактировать/удалять их. Возможно ли это?
решение1
Можно использовать inotifywait
для наблюдения за каталогом и внесения изменений, таких как смена владельца каждого нового файла, копируемого в каталог. В дистрибутиве на основе Debian установите программное обеспечение следующим образом: apt-get install inotify-tools
.
Создайте сценарий, возможно /usr/local/sbin/inbox.sh
, следующим образом.
#!/usr/bin/env bash
inotifywait -m -e create "/path/to/directory" |
while read path event file; do
if [ "$event" = "CREATE" ]; then
chown root:root "$path$file"
fi
done
Дайте скрипту разрешение на выполнение ( chmod 0700 /usr/local/sbin/inbox.sh
). Затем запустите его во время загрузки, скажем, из /etc/rc.local
или любого подходящего RC-файла: /usr/local/sbin/inbox.sh &
.
Согласноруководство, -m
отслеживает бесконечно и -e
следит за определенным событием. Внутри while
цикла можно получить событие, например CREATE,ISDIR
, которое, конечно, указывает на создание каталога. Каталоги не являются целью вопроса; таким образом, оператор if
содержит команду отвечать только на новые файлы, которые представлены событием CREATE
. path
Переменная from inotifywait
имеет завершающий символ косой черты, поэтому $path
и $file
можно объединять без указания косой черты между ними.