我所在的公司正在设置一台新服务器,用于托管 PHP 应用程序。我在一所大学工作,这台服务器本质上是一个游乐场,可以让那些想摆弄 PHP 的教职员工远离我们的生产网络空间。
我被要求为校园内将使用该系统的每个部门创建一个帐户。每个帐户的“主”文件夹应是指向其在 Web 根目录下指定文件夹的符号链接,该文件夹具有用户帐户名,并且它们不应能够移动到主文件夹之上。
因此,当用户通过其部门帐户(假设为“gradstudies”)登录时,他们将自动进入 /srv/www/htdocs/gradstudies 文件夹,并且无法移动到该文件夹之上。在该文件夹中,他们应该可以做任何他们想做的事情。
是否可以通过用户帐户和组设置简单地做到这一点,还是需要在 Apache 中创建虚拟主机和其他内容?如果可以避免的话,我真的不想修改 Apache 配置。
答案1
用户将如何登录系统?直接 shell 访问、sftp、ftp、webdav、smb、nfs 等?直接强制使用备用根文件夹的方法因文件发布协议而异。就我个人而言,我现在非常喜欢 sftp,并且设置使用 sftp 进行 chroot使用最新版本的 OpenSSH 相当容易。
为什么你要从他们的主目录符号链接到 Web 根目录?为什么不使用类似mod_userdir将他们的主目录链接到网络?
你可能还想认真看看类似的东西苏php它会在文件所有者的权限下运行 PHP 代码。如果您不使用类似的东西,那么 PHP 代码将在 Web 服务器帐户下运行,一个用户的 PHP 代码可能会意外或故意破坏另一个用户的权限。