我可以有多个 chroot 目录吗?

Dou*_*oug 0 apache-2.2

目前我的用户被 chroot 到/srv/www,但我想让我的用户访问另一个目录/Zend/。有没有办法做到这一点?

我正在使用 Debian 6。

Roy*_*ams 6

一般来说,chroot 的设计不允许这种情况发生,除非您明确地做某事使其中一个目录显示为另一个目录的真正后代(而不是带有符号链接)。

这可以在各种类 Unix 上以各种方式完成(例如,在 FreeBSD 中使用空挂载)。 ProFTPd chroot 参考页面对在各种系统上执行此操作有一个很好的总结:

Linux (as of the 2.4.0 kernel):
  mount --bind /var/ftp/incoming /home/bob/incoming
  mount --bind /var/ftp/incoming /home/dave/incoming
or, alternatively:
  mount -o bind /var/ftp/incoming /home/bob/incoming
  mount -o bind /var/ftp/incoming /home/dave/incoming
BSD (as of 4.4BSD):
  mount_null /var/ftp/incoming /home/bob/incoming
  mount_null /var/ftp/incoming /home/dave/incoming
Solaris:
  mount -F lofs /var/ftp/incoming /home/bob/incoming
  mount -F lofs /var/ftp/incoming /home/dave/incoming
Run Code Online (Sandbox Code Playgroud)

编辑:添加一些特定于 Debian 的细节,您的挂载可能类似于:

mount -o bind /true/path/to/Zend /srv/www/Zend
Run Code Online (Sandbox Code Playgroud)

...这将显示为/Zend好像您的用户被 chroot 到/srv/www.