
SFTP へのアクセスを 1 つのユーザー アカウントのみに制限しようとしています。ログイン後、いくつかのコマンドを実行する必要があります。そのため、sshd_config に forcecommmand を挿入しました。
Match group stream
#ChrootDirectory /home/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand sudo /etc/mountsftp.sh
#ForceCommand internal-sftp
これは正常に動作し、私のコマンド スクリプトは次のようになります。
#!/bin/bash
now=$(date +"%T,%D")
echo "Login : $now" >> /login.log
sshfs usrl@server:/usbshare1-2 /media/pp -o reconnect -o allow_other -o workaround=all
mount --bind /media/pp/Serien /home/stream/Serien
J=$HOME
#
#exit by calling a shell to open for the ssh session
#internal-sftp
#cp -v /usr/lib/openssh/sftp-server $J/bin/
chroot $J /usr/lib/openssh/sftp-server
が実行されます。しかし、CHROOT の後は sftp サーバーが見つからないため、起動できません。しかし、この sftp サーバーだけでなく Chroot も必要です。これを実現する方法はありますか?
PS: 必要なカーネル モジュールなしですべてが vserver 上で実行されるため、マウント用の Autofs はオプションではありません。
答え1
sftp-server
バイナリとそのすべての依存関係 ( ldd /usr/lib/openssh/sftp-server
) を chroot にコピーすると、実行できるようになります。