保护 chroot 根文件系统中的目录

保护 chroot 根文件系统中的目录

因此,我们尝试改造一个较旧的 ftp 投递服务器,该服务器也可用作 rsync 端点。在每个用户 chroot 中,都有一个如下所示的目录结构:

/.
├─── usr/
├─── lib/
└─── ...(customer data)

理想情况下,我们会/data在 chroot 中添加一个目录,并且几年前就告诉客户将他们的数据发送到那里。但是我们过去没有这样做,并且近期无法更改结构。

我想知道是否有权限组合允许我的用户在 / 目录中创建新文件,但不能移动或重命名当前存在的两个目录。我认为这可以通过 ACL 来实现,但我不知道怎么做。因此,作为测试

  1. echo cust_data > customer_file:应该允许
  2. mv customer_file customer_file2:应该允许
  3. mkdir customer_dir:应该允许
  4. rm usr:应被禁止
  5. mv usr usr_something:应被禁止

是否有我可以设置 ACL 策略来实现这一点?

答案1

将 chroot 目录的所有权设置/root:root

chown root:root /path/to/chroot/rootdir

然后设置粘着位

chmod 1777 /path/to/chroot/rootdir

保留/usr原样/lib,大概类似于root-owned 和root-only writable。这将使用户可以随心所欲地操作文件,但无法以任何方式进行/usr修改。/lib

Linuxchmod.1手册页

限制删除标志或粘性位是一个位,其解释取决于文件类型。对于目录,它可以防止非特权用户删除或重命名目录中的文件,除非他们拥有该文件或目录;这称为目录的限制删除标志,通常位于可全局写入的目录中,例如/tmp。对于某些较旧系统上的常规文件,该位将程序的文本图像保存在交换设备上,以便在运行时加载速度更快;这称为 粘着位

相关内容