仅允许外部承包商访问 apache web 文件夹。选项:SFTP 越狱
Allow external contractor to access the apache webfolder only. Option: SFTP Jailing
以下问题:我们 运行 一个 CentOS 网络服务器,并想授予外部承包商访问权限,该承包商只需要访问我们的网络文件夹“/var/www”到 Modify/Upload 文件。
我尝试设置 SFTP jailing(根据以下文档:http://www.thegeekstuff.com/2012/03/chroot-sftp-setup/),但由于以下原因我无法使其工作:整个网络文件夹已分配 Apache 用户 apache:apache 和 CentOS 一样。但是 SFTP 需要拥有 root:root 所有权,否则会出现以下错误:
fatal: bad ownership or modes for chroot directory component "/var/www/" [postauth]
那么我如何设置 SFTP 或其他解决方案以保留 "www" 文件夹 apache:apache 的所有权并允许其他用户访问它?
除了 SFTP 之外,还有其他方法可以解决这个问题吗?或者 SFTP 是正确的做法吗?
预先感谢您的帮助!
那么,您需要确保为 SFTP 目录设置了正确的权限和所有权。此外,确保被监禁的用户主目录属于 root:root 并将其更改为 755(因此 'Other' 用户可以执行它)..
chown root:root /home/$SFTPUSER
chmod 755 /home/$SFTPUSER
此外,您需要确保原始 Web 目录属于 $SFTP 用户和 apache,以及权限 2775。
我最终是怎么做到的:
创建组和用户
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 webmasters
ChrootDirectory /var/www/
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
重启sshd服务
systemctl restart sshd
文件夹权限
文件权限很关键!请仔细检查以下内容是否适用于您的情况。
chown -R root:webmasters /var/www/html/
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/ffhs/data/ # As data directory must be writable by apache
chown root:root /var/www/
以下问题:我们 运行 一个 CentOS 网络服务器,并想授予外部承包商访问权限,该承包商只需要访问我们的网络文件夹“/var/www”到 Modify/Upload 文件。
我尝试设置 SFTP jailing(根据以下文档:http://www.thegeekstuff.com/2012/03/chroot-sftp-setup/),但由于以下原因我无法使其工作:整个网络文件夹已分配 Apache 用户 apache:apache 和 CentOS 一样。但是 SFTP 需要拥有 root:root 所有权,否则会出现以下错误:
fatal: bad ownership or modes for chroot directory component "/var/www/" [postauth]
那么我如何设置 SFTP 或其他解决方案以保留 "www" 文件夹 apache:apache 的所有权并允许其他用户访问它?
除了 SFTP 之外,还有其他方法可以解决这个问题吗?或者 SFTP 是正确的做法吗?
预先感谢您的帮助!
那么,您需要确保为 SFTP 目录设置了正确的权限和所有权。此外,确保被监禁的用户主目录属于 root:root 并将其更改为 755(因此 'Other' 用户可以执行它)..
chown root:root /home/$SFTPUSER
chmod 755 /home/$SFTPUSER
此外,您需要确保原始 Web 目录属于 $SFTP 用户和 apache,以及权限 2775。
我最终是怎么做到的:
创建组和用户
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 webmasters
ChrootDirectory /var/www/
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
重启sshd服务
systemctl restart sshd
文件夹权限
文件权限很关键!请仔细检查以下内容是否适用于您的情况。
chown -R root:webmasters /var/www/html/
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/ffhs/data/ # As data directory must be writable by apache
chown root:root /var/www/