Я хотел бы дать пользователю разрешения на создание и чтение файлов в определенном каталоге, но не изменять или удалять файлы. Если пользователь может добавлять файлы, это нормально, но я бы не стал. Это на Ubuntu Linux.
Я думаю, что это невозможно со стандартными правами доступа к файлам Unix, но, возможно, это возможно с помощью ACL? Пользователь всегда будет подключаться с использованием SFTP, поэтому, если бы был какой-то способ контролировать это в SFTP (в отличие от разрешений ОС), это было бы хорошо.
Чтобы быть абсолютно ясным, я хочу следующее:
- echo hello> test # успешно, потому что test не существует, и создание разрешено
- echo hello >> test # может быть успешным или неуспешным, в зависимости от того, разрешено ли добавление
- echo hello2> test # терпит неудачу, потому что test уже существует, и изменение не разрешено
- cat test # успешно, потому что чтение разрешено
- rm test # не пройден, так как удаление не разрешено
Если вам интересно, почему я хочу это сделать, это сделать систему резервного копирования Duplicati устойчивой к вымогателям.
linux
files
permissions
acl
paj28
источник
источник
echo > test
, оболочкаopen("test", O_WRONLY|O_CREAT|O_TRUNC)
создает файл, а затем вызывает его дляecho
записи содержимого, чтобы изменить его. Теперь вы можете разрешить только первое открытие (WR).Ответы:
Вы можете использовать
bindfs
как:Этот каталог принадлежит Стефану с группой Стефан (Стефан является его единственным членом). Также обратите внимание на
t
то, что пользователи не могут переименовывать или удалять записи, которые им не принадлежат.Мы
bindfs
dir
над собой с фиксированным владением и разрешениями для файлов и каталогов. Все файлы принадлежатroot
(хотя в реальном каталоге они все еще принадлежат Стефану).Каталоги получают
drwxrwxr-x root stephane
разрешения, в то время как другие типы файлов получают-rw-r--r-- root stephane
их.Теперь создание файла работает, потому что каталог доступен для записи:
Однако это не возможно сделать секунду запись
open()
в этот файл, поскольку у нас нет разрешения на него:(обратите внимание, что добавление туда не допускается (как не часть ваших начальных требований)).
Ограничение: хотя вы не можете удалять или переименовывать записи
dir
из-заt
бита, новые каталоги, которые вы создаете там, не будут иметь этогоt
бита, поэтому вы сможете переименовывать или удалять записи там.источник
chattr +a
Опция позволит добавление только. Файлы могут быть изменены таким образом, но только путем добавления (то есть добавления строк) к ним. Вы не можете удалять существующие файлы, но создавать новые. Это может соответствовать вашим потребностям:из
man chattr
(обратите внимание, что это относится и к каталогам)
Итак, ваш список будет выглядеть так:
источник
chattr +a
то, когда я могу создать файл, я не могу удалить его, могу добавить. Если я создаю dir1 / dir2, тогда я могу делать все, что