为使用我的服务器的人设置权限的最佳方法是什么?

为使用我的服务器的人设置权限的最佳方法是什么?

我正在和某人合作开发一个网站。我想让他们只访问他们的主目录和网站目录。实现此目的的最简单方法是什么?我也不想弄乱 Apache 对网站的权限。我正在运行 Ubuntu。

答案1

您可以为该网站项目创建一个组,然后将他的用户帐户添加到该组。确保该组对网站文件夹具有写权限。

如果您想让他更容易地复制到网站文件夹,您可以在他的主文件夹中创建指向项目网站文件夹的链接。

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

答案2

您应该重新配置您的主目录,使其不可读:

dpkg-reconfigure adduser

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

然后将用户放入他自己的组并创建他的网络服务器目录,确保 www-data 能够在那里读取。不过要注意其他可写入的文件夹。

如果您的用户被允许上传 cgi/php 脚本,您可能需要研究 apache 的 suexec,因为这些脚本将以用户 www-data 的身份运行。上传 php shell 并浏览其他用户的文档根目录很简单。如果您删除了全局读取权限,他们的主目录将被保存。

更新: 我完全忘了提到 rbash。只需将用户的登录 shell 替换为 rbash,他就无法再更改目录了:

chsh -s /bin/rbash user

答案3

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

您还可以使用 SSH 服务器提供的 ChrootDirectory 选项。您必须编辑 sshd_config 文件并为该用户启用 chroot。

如果你真的想这样做,那么你可以使用 Alias 或 VirtualHost 配置 apache 来从某个文件夹(例如 ~/web)提供文件。你还可以启用 UserDir,以便用户可以在以下位置查看文件夹“~/public_html”的页面

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

无论哪种情况,都请在他的主目录上执行 chmod o+x,以便 apache 可以进入其中。

相关内容