サーバー:Red Hat Enterprise Linux Serverリリース6.5(Santiago)
Openssh-serverを使用してsftp接続を許可します。
ユーザーを自分の個人のホームディレクトリに制限しようとしています。そこで、/ etc/passwd設定ユーザー "john"を、/bin/rbash
の代わりに/bin/bash
を使用するように変更しました。
john:502:503::/home/john:/bin/rbash
これを行うと、ジョンはsftp経由で接続できなくなります。ログインするとすぐに接続が閉じます(sftpメッセージはConnection closed
です)。代わりにbashを/ bin/bashに設定すると、彼の接続は正常に機能しますが、ジョンはcdを使用してサーバーファイルシステム全体を移動できます。
Sftp経由で自分のディレクトリに接続するユーザーを制限するために私が間違っていることを説明できますか?
rbash
では、先頭に/
が付いたコマンドを実行できません。それが試行されている場合は、単に終了します。
内部sftp-serverを使用していない限り、/usr/libexec/sftp-server
を実行しようとすると失敗します。
Subsystem sftp internal-sftp
でsshd_config
を使用すると、これが修正されます。
ただし、rbash
を使用しても、sftpがファイルシステムをさまよっているのを防ぐことはできません。おそらく 代わりにユーザーをchrootする 。
リンクなしで通常のシェルを使用できます。制限されたシェルの場合は、/ etc/profileにこれを入力します
if [[ $USER == "pluto" ]]; then
export PATH=$HOME/bin
readonly PATH
set -r
fi
そして
mkdir /home/pluto/bin as root
ln -s /bin/ls /home/pluto/bin/ls
このように、sftpworkとplutoはlsコマンドのみを使用できます