以下问题:我们运行的是一个CentOS网络服务器,希望授予外部承包商访问权限,该承包商只需访问我们的网络文件夹"/var/www'即可修改/上传文件。
我尝试的是设置SFTP监禁(根据以下文件:http://www.thegeekstuff.com/2012/03/chroot-sftp-setup/),但由于以下原因,我无法使其工作:整个Web文件夹已在CentOS中像往常一样分配了Apache用户Apache:Apache。但SFTP需要拥有root:root所有权,否则会出现以下错误:
致命:chroot目录组件"/var/www/"[postauth]的所有权或模式不正确
那么,我如何设置SFTP或其他解决方案来保留"www"文件夹apache:apache所有,并允许其他用户访问它呢?
除了SFTP之外,还有其他选择可以解决这个问题吗?或者SFTP是正确的做法吗?
提前感谢您的帮助!
好吧,您需要确保为SFTP目录设置了正确的权限和所有权。此外,请确保被监禁的用户主目录为root:root所有,并将其chmod为755(这样"其他"用户就可以执行它)。。
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服务器子系统
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/