Предотвращение удаления определенной папки в 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_*