![如何更改 SFTP 默认目录?](https://linux22.com/image/528897/%E5%A6%82%E4%BD%95%E6%9B%B4%E6%94%B9%20SFTP%20%E9%BB%98%E8%AE%A4%E7%9B%AE%E5%BD%95%EF%BC%9F.png)
使用 ProFTPD 你可以更改默认目录编辑/etc/proftpd.conf
DefaultRoot ~
change to
DefaultRoot ~/music
我如何使用 SFTP 实现相同的结果?
我正在使用 Ubuntu Lucid。
答案1
看一下这文章展示了如何使用 sshdChrootDirectory
强制特定组的所有成员进入公共目录根目录。您可以对其进行修改以满足您的要求。
答案2
不幸的是,我没有足够的声誉来发表评论,因为我只想强调 Richard Fairhurst 的评论有多重要,以及应该如何将其添加到“官方答案”中。我见过这里和其他地方的人在设置用户主目录或将用户主目录作为“默认目录”时遇到问题。那只是因为在 chroot 环境中,根目录不再是 /。这意味着任何其他路径都应该相对于新的根路径。例如:
如果您将 chroot 设置为 /home 并希望默认目录为 /home/default,则应将用户主目录设置为 /default。而不是 /home,因为 /home 将成为新的 /。
如果您确实需要将用户主目录保留在 /home/user 中,但希望为 sftp 会话设置一个默认目录,则可以对 internal-sftp 使用 -d 参数。如本例所示:
Subsystem sftp internal-sftp
Match Group sftpusers
ChrootDirectory /mnt/sftp
ForceCommand internal-sftp -d /default
/default 是 /mnt/sftp 中的一个目录。请注意,此处的路径再次相对于新的根目录。
答案3
也许有一种方法可以实现您想要的,但据我所知,sftp 是通过 ssh 操作的,所以不太确定每个用户如何用 ssh 来做到这一点。
但是,解决您想要执行的操作的一种方法是,您可以更新用户数据以登录到某个目录,如下所示。这将
$ sudo usermod -d [certain path that you want to direct] username
答案4
我刚刚在安装 Ubuntu Lucid 10.04 时遇到了同样的问题。答案似乎是将某些登录 chroot 到特定文件夹。唯一的缺点是,它们被 chroot 到的文件夹必须由 root:root 拥有,并且登录用户无法写入,这样 ssh 才能允许 sftp 登录工作。因此,他们只能访问被 chroot 到的文件夹中的其他文件夹。
http://ubuntuforums.org/showthread.php?t=1057657
此外,使用“usermod -d”为用户设置默认文件夹不会改变该用户在 sftp 登录时进入根/文件夹的默认设置。