通过 sftp 进行符号链接和 filezilla

通过 sftp 进行符号链接和 filezilla

我对 Debian 还很陌生,正在尝试设置一个服务器。

我创建了一个只能访问其文件夹/home/username(及其子目录)的用户。

现在我想将该用户用于我设置的 Web 服务器,并且我已授予他访问权限,/var/www但我无法/var/www通过 sftp 查看,因此我做了如下符号链接:

root@server:/home/username# ln -s /var/www www
root@server:/home/username# cd www
root@server:/home/username/www# chown username:username *

现在,使用 filezilla,我可以看到这样的 www 文件夹:

菲利兹拉

但当我尝试打开它时,我得到了这个:

打开

我做错了什么?

答案1

很可能 SFTP 正在被 chroot,因此 chroot jail 中的用户无法使用目录 /var/www。

查看/etc/ssh/sshd_config并检查 sftp 指令。您是否看到类似以下内容的内容:

Match group sftp
  ChrootDirectory /home/%u
  AllowTcpForwarding no
  ForceCommand internal-sftp

sshd_config 手册页是这里

基本上,一旦用户进入/home/usernameSFTP,该目录就会变成,并且无法引用/外部目录。事实上,您尝试访问的符号链接看起来就像是(即,现在是,因此引用的任何链接也必须是chroot 上下文中的子目录)。/home/usernameln -s /var/www /home/username/www/home/username/var/www/home/username//var/www/home/username

解决方案是关闭 chroot(但这会带来其他安全隐患,主要是 SFTP 用户完全控制您的文件系统)。您可以将 /var/www 循环挂载到 /home/username/www(类似于mount --bind /var/www /home/username/www(查看文档mount)这应该会在 chroot 下按预期工作)。您还可以修改 sshd_config 文件以将该特定用户排除在 chroot 之外(不过,同样会带来安全隐患)。

我将首先尝试绑定安装。

答案2

我决定取消我创建的符号链接,并使用

root@server:/home/username# mkdir www
root@server:/home/username# mount --bind /home/username/www /var/www

(即使我丢失了 /var/www 中的所有内容,但我不在乎)

谢谢大家!

相关内容