如何将 ProFTP 和 SSHD_config 设置到 FTP 和 SFTP 到 Ubuntu 12.04 上的同一目录?

如何将 ProFTP 和 SSHD_config 设置到 FTP 和 SFTP 到 Ubuntu 12.04 上的同一目录?

我在 Ubuntu 12.04 上的 chroot 环境遇到了麻烦。

客观的

设置 FTP/SFTP 服务器,其中属于新“sftp”组的用户可以通过 sftp 和 ftp 访问同一目录

ProFTP 设置

ProFTP 设置是 Ubuntu 中的一个基本版本,它按预期运行。用户“test1”可以通过 tcp 21 上的 ftp 登录服务器,并被 chroot 到其目录 /home/test1/ftproot。

在 /etc/proftpd/proftpd.conf 中

# Use this to jail all users in their homes
DefaultRoot                     ~/ftproot

当用户 test1 通过 ftp 登录时,他只能看到 / (这就是我想要的)。

但是当同一个用户通过 sftp 登录时,并且使用 sshd_config 正确地进行 chroot,因为 /home/test1 目录必须由 root 拥有,所以用户通过 sftp 登录并看到:

/
/ftproot
/.bashrc

这意味着用户不会最终进入同一个 /ftproot 目录。默认情况下,test1 将进入他的 /home/test1 主目录,该目录实际上由 root 拥有。因此,除非他将目录更改为 /ftproot,否则他无法通过 sftp 写入任何内容。

我如何设置 sftp 服务器以便默认情况下它最终位于同一目录中?

以下是我的sshd_config相关设置:

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp -f AUTH -1 VERBOSE
Match Group sftp
ChrootDirectory %h
ForceCommand internal-sftp
#AllowTcpForwarding No

ChrootDirectory %h/ftproot 不起作用。

答案1

现在它proftpd有自己的 SFTP 实现,通过mod_sftp模块,使用它来满足您的 SFTP 需求(而不是 OpenSSH)可能会巧妙地解决这个问题。

答案2

您需要更改用户“test1”使用 SSH 到达的文件夹。看看这个问题的答案:https://stackoverflow.com/questions/3530433/putty-change-default-ssh-login-directory
添加cd subdir/subdir到~/.bashrc或~/.bash_profile,或者
更改用户的主目录。

要更改用户的主目录:usermod -d /path/to/dir/ username

相关内容