服务器 Gind.cn

服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器

将Apache虚拟主机从系统的其余部分分离出来

我正在build立一个Web服务器,它将把许多不同的网站作为Apache VirtualHosts来托pipe,其中每一个都有可能运行脚本(主要是PHP,其他的)。 我的问题是,我如何将这些虚拟主机中的每一个与其他系统隔离开来? 我不希望网站X读取网站Y或任何服务器的“私人”文件的configuration。 目前我已经使用FastCGI,PHP和SUExec设置了VirtualHosts,如下所述(http://10hosting.com/forums/vps-tutorials/148894-debian-apache-2-2-fastcgi-php-5-suexec -easy-way.html ),但是SUExec只能防止用户编辑/执行非自己的文件 – 用户仍然可以读取configuration文件等敏感信息。 我曾经想过要删除服务器上所有文件的UNIX全局读取权限,因为这样可以解决上述问题,但我不确定是否可以安全地执行此操作而不中断服务器function。 我也研究过使用chroot,但是这似乎只能在每个服务器的基础上完成,而不是在每个虚拟主机的基础上完成。 我正在寻找任何build议,将我的VirtualHosts从系统的其余部分。 PS我正在运行的Ubuntu 12.04服务器 我的答案:我几乎按照我目前的configuration结束了,但是为所有的虚拟主机做了一个chroot jail,例如在/var/www有chroot jail,然后把所有的用户数据放在每个group / others r /禁用了w / x权限。 特别是这个选项是可取的,因为这是所有可能的,没有任何修改源代码。 我select了@Chris的答案,因为它被彻底写入,也被认为是FTP和SELinux

作为另一个用户启动一个脚本

我在/etc/init.d/中创build了一个脚本,它必须从其主目录中运行其他(非超级用户)用户的其他脚本,就好像他们启动了它们一样。 我使用以下sudo -b -u <username> <script_of_a_particular_user>启动这些脚本: sudo -b -u <username> <script_of_a_particular_user> 它工作。 但是,对于每个继续运行的用户脚本(例如一些看门狗),我都会看到一个相应的父级sudo进程,它仍然以root身份运行。 这在活动进程列表中创build一个混乱。 所以我的问题是: 如何从另一个用户启动(fork)另一个脚本作为另一个用户,并将其作为孤立的(独立)进程? 更详细的解释: 我基本上是试图提供给机器上的其他用户一个意思是在系统启动或系统closures时运行的东西,通过运行在其主目录中find的名为.startUp和.shutDown的各个子目录中find的可执行文件。 由于我没有find任何其他的方法来做到这一点,所以我写了我的bash脚本,完全是这样做的,我已经在/etc/init.d/中configuration它作为服务脚本(通过下面的框架示例)启动参数启动了.startUp目录中的所有内容,当它以stop参数运行时,它启动所有用户的.shutDown目录中的所有内容。 另外我也有兴趣,如果我可以使用一些现有的解决scheme来解决这个问题。 UPDATE 我查了一下,我发现这个问题: https : //unix.stackexchange.com/questions/22478/detach-a-daemon-using-sudo 接受的答案在那里,使用: sudo -u user sh -c "daemon & disown %1" ,适用于我。 但是,我也尝试不留%1 ,这是一样的。 所以这就是我所期待的对我的作用: sudo -u <username> bash -c "<script_of_a_particular_user> &" 我现在的另外一个问题是,为什么它没有被忽视呢? 无论如何,我是否还应该离开这个离别的电话呢? 更新2 显然这也可以工作: su <username> -c "<script_of_a_particular_user> &" […]