web-dev-qa-db-ja.com

ユーザーをホームディレクトリに制限するrbashは、sftp接続を閉じます

サーバー: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経由で自分のディレクトリに接続するユーザーを制限するために私が間違っていることを説明できますか?

3
pixeline

rbashでは、先頭に/が付いたコマンドを実行できません。それが試行されている場合は、単に終了します。

内部sftp-serverを使用していない限り、/usr/libexec/sftp-serverを実行しようとすると失敗します。

Subsystem sftp internal-sftpsshd_configを使用すると、これが修正されます。

ただし、rbashを使用しても、sftpがファイルシステムをさまよっているのを防ぐことはできません。おそらく 代わりにユーザーをchrootする

1
mr.spuratic

リンクなしで通常のシェルを使用できます。制限されたシェルの場合は、/ 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コマンドのみを使用できます

0
c4f4t0r