我有一个ubuntu12.04应用服务器托管一些网站。我们需要给予开发人员访问权限,才能将文件上传到其中一个网站。我已经安装了Jailkit,但似乎找不到如何让他访问sFTP的网站目录。
以下是我们的web目录结构:
/var/www/website.com/htdocs/ /var/www/另一个website.com/htdocs/ /var/www/website3.com/htdocs/所有属于www-data:www-data
有人能给我一些步骤,让用户通过sFTP访问其中的一个或两个目录,而不是ssh访问?
发布于 2013-01-02 00:42:50
通常,由于遇到的原因,这不是一个实用的目录结构。如果您只有一个网站,那么/var/www污染可能会很好。然而,在我的经验中,20+多年来,最好的方法是创建一个独立的主分区,以便主分区可以挂载nosuid、noexec、nodev等。每个网站都有自己的系统用户帐户。给该帐户一个shell,rssh,它允许sftp,但不允许ssh。在托管、雇用开发人员时,甚至从安全的角度来看,这都是实用的。
写了这么多之后,有一个解决方案变得清晰起来:将站点移动到用户帐户目录并更新web服务器配置。这可以通过创建子域上的网站副本来安全地完成。例如,对于域www.website.com,创建一个名为test.website.com的CNAME。确保test.website.com上的站点正常工作。然后,更新web服务器配置文件,一旦您知道它是完美无缺的,就将www.website.com指向新位置。
在这一点上,您可以提供通过sFTP访问任何人,您不关心这个问题。
但是..。为了达到目的并回答以下问题:一个不太明显但有效的解决方案是使用ACL。使用ACL,您可以在文件系统权限上获得更好的细粒度控制。使用ACL可以提供所需的限制。
要做的第一件事是安装acl软件:
sudo apt-get install acl接下来要做的事情是使用ACL选项挂载或重新装入文件系统。
sudo -e /etc/fstab您可能会看到这样的一行,因此添加acl选项。
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / ext4 defaults,acl 0 1存起来,然后退出。已启用acl重装。
sudo mount -o remount,acl /在此之后,您将可以访问ACL。有关于help.ubuntu.com的ACL指南。在askubuntu.com上使用ACL的一些示例:
https://askubuntu.com/questions/210540
复制相似问题