问题
我们公司的网站全部位于高性能网络服务器上,其中包括几个开发和仅供内部使用的项目。
我们的一些网站是公共网站,需要定期进行后端更新。这些更新由第三方承包 SEO/设计公司进行。
我需要设置一个 FTP 帐户,第三方公司可以使用该帐户通过 FTP(或理想情况下是 SFTP)访问这些网站,以便修改那里的文件。我不希望他们对我们的服务器的其余部分或其他网站有任何访问权限。
例子
为了说明我的情况,我们假设我在 Apache 中将四个网站配置为虚拟主机:
internalsite1.com
internalsite2.com
contentsite1.com
contentsite2.com
它们存在于我的服务器上的以下位置:
/var/www/html/
/internalsite1.com
/internalsite2.com
/contentsite1.com
/contentsite2.com
现在,我需要允许通过 FTP 帐户访问“contentsite”主机以修改文件。只有登录的用户(即通过标准 SSH)才能访问“internalsite”主机。
** 我尝试过的方法 **
今天早些时候,我尝试修改我的 SSH 配置,使用OpenSSH 的internal-sftp
和ChrootDirectory
功能创建 chroot 用户。但是,配置变得非常复杂,我不能冒险破坏对我的服务器的 SSH 访问,所以我放弃了这种方法。
目前,我正在尝试弄清楚如何使用vsftpd
来实现我的目标;但到目前为止,我只能设置一个可以访问单个目录的帐户。这可能就足够了,但 vsftpd 有几十个选项,但没有关于如何实现这一特定设置的明确文档。
问题
如何使单个 ftp 用户帐户能够访问服务器上的多个目录位置(每个目录位置代表一个目录位置)?
笔记: 链接至清除欢迎提供教程。
编辑:虽然我希望他们通过 SFTP 登录,但我还是会选择普通的 FTP 访问。我只需要在服务器上创建一个可以访问上述三个网站位置的 FTP 帐户。-
答案1
考虑 chroot 用户。这是针对 Ubuntu 的指南,但应该可以适应。
答案2
以下是指南用于安装和设置scponly
,这是一个提供备用登录 shell 的软件包。基本思路是将用户的登录 shell 设置为/usr/bin/scponly
,然后该用户只能使用 SFTP 或 SCP;他/她无法获取命令行 shell。
该scponly
软件包还提供了 chroot 选项,包括第二个备用登录 shell ( /usr/sbin/scponlyc
) 和一些额外的设置。请务必阅读那里的整个论坛主题,因为其他人在回应主要文章时给出了一些额外的提示。
本指南在某种程度上是针对 Ubuntu 的,但它应该也适用于 Debian 或任何 Debian 衍生发行版。如果您的 Linux 不是上述任何一种,您仍然可以下载源代码,自己编译,然后按照指南中概述的步骤进行操作。