通过SFTP的符号链接和Filezilla


15

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

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

现在,我想将该用户用于我设置的网络服务器,并且已经授予他访问权限,/var/www但我看不到/var/wwwsftp,并且做了如下符号链接:

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文件夹,如下所示:

Filezilla

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

打开

我做错了什么?

Answers:


22

SFTP可能已被chroot,因此chroot监狱中的用户无法使用目录/ var / www。

查看/etc/ssh/sshd_config并检查sftp指令。您看到类似的东西吗?

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

sshd_config手册页在这里

基本上,一旦用户/home/username进入SFTP,该目录将变为,/并且外部的引用/home/username不可用。实际上,类似的符号链接ln -s /var/www /home/username/www看起来就像您要尝试到达的/home/username/var/www(即,/home/username现在是/这样,因此引用的任何链接也/var/www必须/home/username在chroot的上下文中也是其子目录)。

作为解决方案,您可以关闭chroot(但这将带来其他安全隐患,主要是SFTP用户完全控制了文件系统)。您可以将/ var / www循环挂载到/ home / username / www(类似mount --bind /var/www /home/username/www(请检查文档mount)),该操作应该可以在chroot下正常运行。您还可以处理sshd_config文件,以从chroot中排除该特定用户(尽管再次涉及安全问题)。

我会先尝试绑定安装。


2
+1的--bind技巧!
Helge Klein

1
如果您希望它在重新启动后/etc/fstab/home/username/www /var/www none bind 0 0
保持不变

0

我决定取消与我建立的符号链接的链接

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

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

谢谢大家!


你什么都没丢。在重新挂载之前,只需卸载并复制文件即可。
Zoredache

谢谢!我只有1个带链接的文件,没什么重要的,但是我想不起来要恢复它:D
Doc
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.