Предотвращение удаления определенной папки в CentOS

У меня есть сервер CentOS, на котором запущен PureFTPd с несколькими виртуальными пользователями, привязанными к одному системному пользователю. Каждый из этих виртуальных пользователей привязывается к каталогу, соответствующему их имени пользователя. Дерево каталогов:

  • / ftp_accounts
    • / virtual_user_1
    • / virtual_user_2
    • ...
    • / virtual_user_N

Только один из этих виртуальных пользователей FTP (назовем его "master_virtual_user") является основным ftp_accounts каталог, разрешающий доступ ко всем подпапкам.

Для этого конкретного "master_virtual_user" я хотел бы предотвратить удаление только virtual_user_* папки, но все еще поддерживают полный доступ для чтения и записи ко всему остальному в этом дереве каталогов.

Учитывая, что все эти виртуальные FTP-пользователи отображаются на одного и того же системного пользователя, есть ли способ достичь этого?

2 ответа

Решение

Было бы хорошо, если бы вы могли использовать флаг immutable для каталогов, но вы можете обмануть, сделав файл в этом каталоге неизменным. Так touch virtu_user_X/.immutable затем chattr +i virt_user_x/.immutable, Например:

[root@hellonurse ~]# cd /root
[root@hellonurse ~]# mkdir z
[root@hellonurse ~]# cd z
[root@hellonurse z]# touch .i
[root@hellonurse z]# chattr +i .i
[root@hellonurse z]# cd ..
[root@hellonurse ~]# rm  -rf z
rm: cannot remove ‘z/.i’: Operation not permitted
[root@hellonurse ~]# chattr -i z/.i
[root@hellonurse ~]# rm  -rf z
[root@hellonurse ~]# ls z
ls: cannot access z: No such file or directory

Отмените разрешения на запись для этого пользователя, используя списки контроля доступа к файловой системе (ACL) - setfacl команда.

setfacl -m u:master_virtual_user:r-x virtual_user_*

Другие вопросы по тегам