如何在虚拟主机上安全地拥有多对多用户

Posted

技术标签:

【中文标题】如何在虚拟主机上安全地拥有多对多用户【英文标题】:How to securely have many to many users on virtual hosts 【发布时间】:2015-11-01 17:15:51 【问题描述】:

我目前在我的虚拟主机上设置了一个用户,如下所示:

sudo useradd -d /website/ -m user -s /usr/bin/rssh

sudo chown root:root /website/ -R #Don't get why I need this part but doesn't work without! 
sudo chmod 755 /website/
sudo chown -R user:www-data /website/public_html
sudo chmod 755 /website/public_html

这适用于user/website/public_html 中添加和编辑文件夹和文件。

我现在希望能够添加能够在/website/public_html 中添加和编辑文件夹和文件的其他用户。问题在于,如果我开始使用组并将用户添加到组 www-data 并将 chmod 更改为 775,那么用户将能够编辑其他虚拟主机网站,例如 /website2/public_html

所有用户(如上所示)只能通过 sftp (-s /usr/bin/rssh) 访问服务器。在sshd_config† 的设置帮助下,用户也被锁定到他们的主目录。至此,我想我可以将所有用户添加到同一组 (www-data) 和 chmod 775 目录中,还是不安全

例如here 有人提到授予虚拟主机775 权限可能允许用户插入可以删除所有内容的php 脚本。但是如果没有775,这也不允许php创建文件。

†:

Match user user
        ChrootDirectory /website/
        ForceCommand internal-sftp
        AllowTcpForwarding no
        GatewayPorts no
        X11Forwarding no

【问题讨论】:

需要为同组的用户添加权限 sudo chmod -R 775 到public_html或者www文件夹。 但正如我所说,我有很多虚拟主机,所以这会导致其他人可以访问其他网站! 如何为每个虚拟主机创建一个新组,向其中添加 www-data 和其他授权用户,然后为该组执行 chown? @Ahmad 谢谢你的工作!! @Maximilian:欢迎您!请将我的答案标记为正确! 【参考方案1】:

您可以为每个虚拟主机创建一个新组,并将 www-data 和其他授权用户添加到该组。然后将该组设置为文件的所有者(chown)。通过指定适当的权限(如 775),您将在那里。

【讨论】:

以上是关于如何在虚拟主机上安全地拥有多对多用户的主要内容,如果未能解决你的问题,请参考以下文章

具有额外多对多关系的 JPA 多对多

与对象的多对多关系,其中存在中间字段?

用户权限管理

QEMU-KVM虚拟化平台下虚机逃逸漏洞修复方案

如何避免与 Doctrine2 和 Zend Framework 2 的多对多关系重复?

linux用户权限管理