sftp 上的符号链接和 filezilla

Doc*_*Doc 15 debian ftp sftp symbolic-link

我对 debian 很陌生,我正在尝试设置服务器。

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

现在我想将该用户用于我设置的网络服务器,并且我已经授予他访问权限,/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 *
Run Code Online (Sandbox Code Playgroud)

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

档案馆

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

打开

我做错了什么?

cjc*_*cjc 24

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

查看/etc/ssh/sshd_config并检查 sftp 指令。你看到类似的东西:

Match group sftp
  ChrootDirectory /home/%u
  AllowTcpForwarding no
  ForceCommand internal-sftp
Run Code Online (Sandbox Code Playgroud)

sshd_config 手册页在这里

基本上,一旦用户/home/username在 SFTP 中,该目录就会变为/并且外部的引用/home/username不可用。事实上,类似的符号链接ln -s /var/www /home/username/www看起来就像您正在尝试访问/home/username/var/www(即,/home/username现在/任何引用的链接也/var/www必须是/home/usernamechroot 上下文中的子目录)。

作为解决方案,您可以关闭 chroot(但这会带来其他安全隐患,主要是 SFTP 用户完全控制您的文件系统)。您可以将 /var/www 循环挂载到 /home/username/www (类似于mount --bind /var/www /home/username/www(检查您的文档mount),它应该像您在 chroot 下期望的那样工作)。您还可以使用 sshd_config 文件来从 chroot 中排除该特定用户(尽管同样存在安全隐患)。

我会先尝试绑定安装。

  • +1 为 mount --bind 技巧! (2认同)
  • 如果您希望它在重新启动后保持不变,请使用类似“/home/username/www /var/www none bind 0 0”这样的行编辑您的“/etc/fstab” (2认同)