私はこのような他の質問があることを知っています、そして、私はすでにそれらのいくつかを読みました。しかし、それは私の問題を解決しませんでした。 ホームディレクトリのみにsftpアクセスできるユーザーを作成し、このディレクトリの上のファイル/フォルダを表示できないようにします。また、このディレクトリでシェルコマンドを実行できる必要があります。(ノードプロセスの開始例)
これまでのところ、sftpアクセスは機能しています。ユーザーは自分のホームディレクトリに制限され、ファイルを編集/削除できます。
シンボリックリンクSudo ln -s /bin/bash /bin/rbash
を作成しようとしましたが、file already existing
と表示されるため、ユーザーシェルをSudo usermod -s /bin/rbash user
に設定しましたが、ユーザーがshhを介してログインすると、Ubuntuのウェルカムテキストと/bin/rbash: No such file or directory
が表示されます。シェルをbashに設定した場合も同じことが起こります。
私のsshd_confは次のようになります。
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication. Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM yes
Match group sftp
ChrootDirectory /home/userdirectory
AllowTcpForwarding no
# ForceCommand internal-sftp
また、/bin/bash
から/home/userdirectory/bin/bash
へのシンボリックリンクを作成しようとしましたが、ユーザーがssh経由でログインするとToo many symbolic links
と表示されます。
/bin/bash
を/home/userdirectory/bin/bash
にコピーすると、no such file or directory
と表示されます。
/bin/bash
を/home/userdirectory/bin/bash
にコピーして、これを解決しました。
その後、必要なライブラリをリストしました
ldd /bin/bash
それらをすべてchroot /home/userdirectory
の下の適切なディレクトリにコピーしました。
シェルでさらにコマンドを使用する場合は、/bin
から/home/userdirectory/bin
にコマンドをコピーし、ライブラリを追加する必要があります。