防止在 CentOS 中删除特定文件夹

防止在 CentOS 中删除特定文件夹

我有一台运行 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/.immutablechattr +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_*

相关内容