我在 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