sftp chrooted dosent与一些sftp客户端(Cyber​​duck)

我不能在SFTP + chrooted env上工作使用internal-sftp指令它工作,但我无法设置umask。 (ex umask 002)从openssh软件包使用sftp-server dosent不起作用,因为loginshell仅用于chrooted用户使用/ bin / false重放(文件未find)这是一个来自http://www.openssh的sshd服务器行为。组织/ faq.html常见#2.9

我的sshdconfiguration:

Match User sftponly ChrootDirectory /mnt/www-prod-shared-jail/sftponly/ AllowTCPForwarding no X11Forwarding no #ForceCommand internal-sftp -u 002 ForceCommand /usr/lib/openssh/sftp-server #ForceCommand /bin/sh -c 'umask 002; /usr/lib/openssh/sftp-server' 

你怎么解决这个问题? 我的chrooted环境,在家里(chrooted)是/ jail / user / bin / false

我尝试:

  • 删除.bashrc
  • 禁用/ bin / bash在/ etc / passwd设置/ bin / false
  • 尝试在choroot中重新创build/ bin / bash,但没有任何效果。

你有什么想法 ?

谢谢,Ema

内部的sftp服务器以root用户身份运行,因此会启动root umask。 你可以通过强制umask来解决这个问题,比如在/etc/ssh/sshd_config修改

 Subsystem sftp /usr/lib/openssh/sftp-server 

 Subsystem sftp /bin/sh -c 'umask 0002; /usr/libexec/openssh/sftp-server' 

或者任何你想要的掩饰。

我最近碰到了这个。 在sshd_config中指定umask适用于sftp,但不适用于internal-sftp。 不幸的是,为了在不创build整个chroot环境的情况下监禁用户,你必须使用internal-sftp。 好消息是,如果您使用PAM,仍然可以设置umask。

创build一个包含所有sftp用户的组。 例如,我们称之为sftpjail。

然后将以下内容添加到/etc/pam.d/login

 session optional pam_umask.so sftpjail umask=0002 

这将为sftpjail组中的所有用户设置umask。

编辑如果你想使用上面的configuration,我很确定你所缺less的是chroot环境(二进制文件,configuration文件等) – 因此,当它试图chroot时出现“文件未find”错误。 虽然如果是我,我会回到使用“ForceCommand internal-sftp”并设置PAM中的umask

我有这个问题,但我在客户机上使用ssh而不是sftp。 只要我用sftp用户@主机而不是ssh用户@主机,它工作正常。