Назад | Перейти на главную страницу

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

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

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

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

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

Было бы неплохо, если бы вы могли использовать неизменяемый флаг для каталогов, но вы можете обмануть, создав в этом каталоге неизменяемый файл. Так 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_*