Я знаю, что для файлов и каталогов есть флаг + i, но у меня более глубокая проблема.
Есть ли способ предотвратить удаление папки пользователем, который должен иметь возможность создавать / получать доступ / удалять файлы и папки ВНУТРИ защищенная от удаления папка?
В sudo chattr +i testfolder
flag не поможет, потому что тогда пользователь сможет только читать файлы, но не может их создавать или удалять.
В sudo chattr +a testfolder
flag не поможет, потому что тогда пользователь сможет писать и читать файлы, но только добавлять файлы редактирования и не удалять их.
Мне нужно решение, в котором пользователь может писать, получать доступ и удалить файлы, но не может удалить корневую / родительскую папку.
Это в основном то, для чего предназначена папка / tmp. Так что просто установите разрешения такие же, как / tmp:
chmod --reference=/tmp testfolder
В testfolder
должен принадлежать другому пользователю (например, root). Пользователь сможет wrx
файлы и папки в тестовой папке, но не сможет удалить или изменить тестовую папку.
Например:
[root@host ~]# mkdir /test
[root@host ~]# chmod --reference=/tmp /test
[root@host ~]# ls -ld /test
drwxrwxrwt 2 root root 4096 Feb 15 09:33 /test/
[root@host ~]# su - user
[user@host ~]$ mkdir /test/foo
[user@host ~]$ rm -fr /test
rm: cannot remove `/test': Permission denied
Как вы видете, user
может создавать файлы и каталоги в /test
, но не может его удалить.