为将要使用我的服务器的人设置权限的最佳方法?

我正在和某人在一个网站上工作。 我想给他们只访问他们的主目录和网站目录。 什么是最简单的方法来完成这个? 我也不想这个搞砸了Apache的权限与网站。 我正在运行Ubuntu。

您可以为该网站项目创build一个组,然后将其用户帐户添加到该组。 确定该组有写入权限的网站文件夹。

如果你想让他复制到网站文件夹稍微容易些,你可以在他的home文件夹中创build一个链接到项目web文件夹。

groupadd projectX useradd -G projectX consultantID chown -R Apache:projectX /var/www/projectDir cd ~consultantID ln -s /var/www/projectDir 

你应该重新configuration你的主目录不是全球可读的:

 dpkg-reconfigure adduser 

并检查现有的家庭目录的权限。 我不会太担心系统文件夹访问,linux的默认权限已经适用于多用户环境。

然后把用户放在他自己的组中,并创build他的web服务器目录,确保www-data能够在那里读取。 但是请注意其他世界可写文件夹。

如果允许用户上传cgi / php脚本,则可能需要查看suexec for apache,因为这些脚本将以用户www-data的forms运行。 上传一个php shell并浏览其他用户文档根目录是很简单的。 如果您删除了世界读取权限,他们的主目录将被保存。

更新:我完全忘了提及rbash。 只需用rbashreplace你的用户loginshell,他将不能再改变目录:

 chsh -s /bin/rbash user 

您可以使用chroot将它们限制在其主目录中。 但设置起来非常复杂。 如果这是值得的,你可以看看关于构build安全用户环境的安全焦点文章 。

您也可以使用由SSH服务器提供的选项ChrootDirectory。 您将不得不编辑sshd_config文件并为该用户启用chroot。

如果你真的这样做,那么你可以configurationApache使用别名或VirtualHost服务器文件从一些文件夹说〜/networking。 您也可以启用UserDir,以便用户可以看到文件夹“〜/ public_html”的页面

 http://<domain>/~<username> 

在任何一种情况下,在他的主目录上执行chmod o + x,以便Apache可以进入它的内部。