允许外部提供商访问 CentOS 中的 Webfolder。(选项 SFTP)

允许外部提供商访问 CentOS 中的 Webfolder。(选项 SFTP)

以下问题:我们运行一个 CentOS 网络服务器,并希望授予外部承包商访问权限,该承包商只需要访问我们的网络文件夹“/var/www”即可修改/上传文件。

我尝试设置 SFTP 监禁(根据以下文档:http://www.thegeekstuff.com/2012/03/chroot-sftp-setup/),但由于以下原因,我无法使其工作:整个 webfolder 已像在 CentOS 中一样分配了 Apache 用户 apache:apache。但 SFTP 需要具有 root:root 所有权,否则会出现以下错误:

致命:chroot 目录组件“/var/www/”的所有权或模式错误 [postauth] 那么我该如何设置 SFTP 或其他解决方案以保持“www”文件夹 apache:apache 拥有并允许其他用户访问它?

除了 SFTP 之外还有其他选项可以解决这个问题吗?或者 SFTP 是正确的做法吗?

预先感谢您的帮助!

答案1

我最终使用 SFTP 解决了上述问题。主要问题在于文件权限。我执行了以下步骤(运行 CentOS 7.2):

文件夹权限 设置了以下文件权限。包括粘性位(代码后解释)。

sudo find /var/www/html/ -type f -exec chmod 664 {} \;
sudo find /var/www/html/ -type d -exec chmod 775 {} \;
sudo find /var/www/html/ -type d -exec chmod g+s {} \; # Set SGID in order to keep group for newly created files
sudo chown -R apache:webmasters /var/www/html/website/data/ # As data directory must be writable by apache
chown root:root /var/www/

创建组和用户

为外部提供商创建用户并设置新密码。

groupadd webmasters
useradd -g webmasters -d /var/www/ -s /sbin/nologin externalProvider
passwd externalProvider

在 sshd_config 中设置 sftp-server 子系统

vim /etc/ssh/sshd_config

注释掉现有的子系统并添加:

Subsystem       sftp    internal-sftp

添加 sshd_config 末尾

Match Group sftpusers
       Match Group webmasters
        ChrootDirectory /var/www/
        AllowTCPForwarding no
        X11Forwarding no
        ForceCommand internal-sftp

重启 sshd 服务

systemctl restart sshd

通过 SFTP 登录测试连接

sftp externalProvider@hostname

安全

SELinux 正在强制执行,并且从未出现过与此 SFTP 设置有关的问题。

相关内容