我对 Apache2 相当了解,但我的工作任务如下:
服务器目前有两个虚拟主机。(两个完全独立的客户端)有人问我是否可以创建一个用户帐户,通过该帐户,其中一个客户端将能够基本上限制 FTP 或 SFTP(最好)访问其文件。
虚拟主机当前的布局方式是它们都位于;(客户端 1 和 2 显然是真实名称的假名)/home/web/client1 和 /home/web/public_html(客户端 2)注意:刚刚列出的所有目录都是所有者:组的 web:web。(我知道这必须改变才能实现我想要的结果。)
我的想法是创建一个新用户(称之为 client1)并将他们的 webroot 移动到 /home/client1/public_html,然后为他们设置一个 rssh 帐户,以便他们只能通过 SFTP 进入他们的东西。
对我来说,事情开始变得有点复杂,现在我将拥有两个不同的用户帐户,它们拥有各自的 Web 内容目录和文件,并且需要 Apache 能够为这两个帐户工作,再加上允许一个客户端进行受限访问。
那么,如何设置每个虚拟主机,以便 Web 服务器能够同时为两个站点提供服务?我是否需要在客户端 1 的 public_html 目录中执行 chown client1:www-data 以及 chown client2:www-data,还是我在这里甚至没有走上正确的轨道?
如您所见,问题实际上是多方面的。因此,请尽量详细地介绍与 vhost 问题和 jailing 问题相关的内容。
谢谢大家。
答案1
如果这对您来说是一个真正的问题(但我不确定,因为 Apache 会通过每个虚拟主机的正常指令有效地“监禁”访问)。但如果您真的想一劳永逸地解决这个问题,您可以考虑使用别名 IP 和完全独立的 apache 实例,这些实例仅绑定到各自的 IP。例如,客户端 1 的 apache 绑定到 IP 地址 192.168.0.11:80(eth0:0),客户端 2 转到 192.168.0.12:80(eth0:1),等等。
这会起作用,并且它将允许您完全分离这些实例并执行任何您想做的事情。希望这会有所帮助。
答案2
我刚刚检查了 Apache httpd 2.2 文档。
似乎每个 vhost 都没有“User”指令。唯一接近这个想法的是“SuexecUserGroup”指令。但这只适用于 cgis。