我有一台运行 PureFTPd 的 CentOS 服务器,其中多个虚拟用户映射到单个系统用户。每个虚拟用户都会被 chroot 到与其用户名对应的目录。目录树如下:
- /ftp_帐户
- /虚拟用户1
- /虚拟用户2
- ...
- /虚拟用户_N
只有一个这些 FTP 虚拟用户(我们称他为“master_virtual_user”)被 chrooted 主ftp_accounts
目录,允许访问所有子文件夹。
对于这个特定的“master_virtual_user”,我想防止删除仅有的文件virtual_user_*
夹,但仍然保持对此目录树中所有其他内容的完全读写访问权限。
假设所有这些 FTP 虚拟用户都映射到同一个系统用户,有什么办法可以实现这一点?
答案1
如果你可以在目录上使用不可变标志,那就太好了,但你可以通过在目录中创建一个不可变的文件来作弊。那么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
答案2
使用文件系统访问控制列表(ACL)命令取消该用户的写权限setfacl
。
setfacl -m u:master_virtual_user:r-x virtual_user_*