我正在尝试设置 SFTP(OpenSSH 6.1 internal-sftp),以便一组用户(sftpusers)可以访问我的服务器,专门从事我的网站的开发:
Match Group sftpusers
Chrootdirectory /srv/sftp/shared
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
我已创建由 root 拥有的 chroot (/srv/sftp/shared)。Apache 虚拟目录指向 /srv/sftp/shared/www 中的文件夹。此文件夹由 www-data 拥有,正如预期的那样:
drwxrwxr-x 5 www-data www-data 4096 Oct 13 20:39 /srv/sftp/shared/www
drwxr-x--- 3 root sftpusers 4096 Oct 13 19:41 /srv/sftp/shared
Apache 错误是:
[Sun Oct 13 22:04:15 2013] [crit] [client 117.62.133.161] (13)Permission denied: /srv/sftp/shared/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable Verified virtual directories are set to shared/www, not shared
我可以通过 SFTP 访问所有这些文件。我的问题是,当我尝试从 Web 浏览器访问我的网站时,我收到“权限被拒绝”错误,我猜想这是因为这些文件夹位于 chroot 中。我如何允许 Apache 访问此 chroot?
答案1
看http://wiki.apache.org/httpd/13PermissionDenied,尤其是那句大胆的话搜索包含这些文件的目录,以及所有父目录,直至文件系统的根目录。Apache 需要能够读取/执行的父目录DocumentRoot
。尝试确保对所有文件夹others
都有权限:+rx
chmod -R o+rX /srv