У меня есть все свои файлы на набеге сервера, и он имеет довольно чрезмерную сумму пространства, таким образом, я не часто оказываюсь перед необходимостью удалять что-либо.
У меня все еще есть вещи, пишущие в набег все время, таким образом, я не хочу должным быть использовать sudo, чтобы сделать это. Но действительно ли возможно установить полномочия так, чтобы запись была позволена, но файлы удаления не?
Я предполагаю, что это также потребует, чтобы я использовал sudo для команд mv, но это не проблема
Набег использует btrfs raid1
ОС находится на отдельном диске (сервер Ubuntu 14.04)
Вам нужны полномочия записи каталога создать или удалить файлы. Вам нужны полномочия записи файла изменить файл.
Рассмотрение этого дерева:
FolderA: (no write permissions for you)
- FileX (write permissions)
- FileY (write permissions)
можно теперь изменить FileX и FileY, но Вы не можете удалить их. И при этом Вы не можете создать FileZ в FolderA.
Я не думаю, что это возможно. Созданием файла и удалением в Unix управляет способность записать в каталог---в основном тот же флаг.
Теперь то, что можно сделать, создают два каталога---один с разрешением записи и другим, ограниченным корнем.
[romano:~/tmp/test] % ls -l
total 8
drwxrwxr-x 2 romano romano 4096 Oct 8 18:06 normal
drwxrwxr-x 2 root root 4096 Oct 8 18:06 onlyroot
Вы обычно работаете над normal
. Предположим, что Вы имеете в нем:
[romano:~/tmp/test/normal] % ls
one.txt three.txt two.txt
можно ясно удалить файлы и создать новые; предположите, что Вы хотите защитить" one.txt
" от удаления. То, что можно сделать, создает жесткую ссылку на него в onlyroot
:
[romano:~/tmp/test/normal] 1 % sudo ln one.txt ../onlyroot
Это создаст другое название one.txt
в onlyroot
(использование незначительной суммы пространства; файл не копируется). Теперь как обычный пользователь можно удалить one.txt
в normal
папка, но у Вас будет неприкосновенная версия под onlyroot
один.
[romano:~/tmp/test/normal] % ls
one.txt three.txt two.txt
[romano:~/tmp/test/normal] % rm one.txt
rm: remove regular empty file ‘one.txt’? y
[romano:~/tmp/test/normal] % cd ..
[romano:~/tmp/test] % cd onlyroot
[romano:~/tmp/test/onlyroot] % ls
one.txt
[romano:~/tmp/test/onlyroot] % rm one.txt
rm: remove regular empty file ‘one.txt’? y
rm: cannot remove ‘one.txt’: Permission denied
В моем понимании (на основе https://btrfs.wiki.kernel.org/index.php/Project_ideas#RichACLs_. 2F_NFS4_ACLS ), btrfs поддерживает только традиционные полномочия Unix и POSIX.1e ACLs, и следовательно не может сделать то, что Вы хотите.
Многие/больше всего другие файловые системы поддерживают по крайней мере один из Linux richacls (которому я не верю, находится в магистрали все же), NFSv4 ACLs, ZFS ACLs или Windows ACLs, все из которых позволяют, Вы для специфического отклонения 'удаляете', но я не предполагаю, что Вы были бы готовы бросить функции btrfs только для этого.
, С другой стороны, так как Вы конкретно предназначаете это для принятия мер против простых ошибок, Вы могли бы быть более обеспеченным использованием в своих интересах возможностей снимка btrfs с помощью чего-то как автозащелка.