![为使用我的服务器的人设置权限的最佳方法是什么?](https://linux22.com/image/487312/%E4%B8%BA%E4%BD%BF%E7%94%A8%E6%88%91%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E4%BA%BA%E8%AE%BE%E7%BD%AE%E6%9D%83%E9%99%90%E7%9A%84%E6%9C%80%E4%BD%B3%E6%96%B9%E6%B3%95%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
我正在和某人合作开发一个网站。我想让他们只访问他们的主目录和网站目录。实现此目的的最简单方法是什么?我也不想弄乱 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 可以进入其中。