У меня есть сервер 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_*