我用chrootconfiguration了一个sftp服务器,它工作正常,唯一困扰我的是最初的登陆目录,因为sftp用户在登陆文件夹中没有写入权限,他必须去一个以他自己命名的文件夹用户名来上传文件。
我已经设置了:ForceCommand internal-sftp -d%u,我在一些configuration指南中发现它们说它应该更改登陆文件夹,但是它不起作用。 在开始时我已经在passwd上为用户loginconfiguration了一个空脚本,但是如果它可能与此有关,我将它改为了/ bin / bash。 我重新启动服务,所以也可能不是这个原因。
也许这可能与ssh的版本有关,我使用的分发版或者sshd都不能这样做?
这是我的configuration关于sshd:
CentOS版本6.6(最终版)
OpenSSH_5.3p1,OpenSSL 1.0.1e-fips 2011年2月11日
Subsystem sftp internal-sftp Match group sftponly ChrootDirectory %h X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp -d %u
你可以使用sftp选项来更改你的起始目录。 请参阅sftp-server(8)手册页:
-d start_directory
为用户指定备用起始目录。 path名可能包含以下在运行时展开的标记:
%%被replace为文字'%',%h被replace为被authentication的用户的主目录,%u被replace为该用户的用户名。 默认是使用用户的主目录。 此选项与sshd_config(5)ChrootDirectory选项一起使用时很有用。
你可以通过把它作为internal-sftp的参数来做到这一点,例如:
Subsystem sftp internal-sftp -d "%h/sftp_home/"
这应该从6.2版本开始