web-dev-qa-db-ja.com

sshfs:すべての非ルートユーザーを特定のディレクトリにchroot

サーバーでは、rootには無制限のsshアクセスが必要で、他のすべてのユーザーには制限されています。

Root以外のすべてのユーザーを以下に制限したいと思います。

  • sSHログインなし
  • sshfsを使用したマウント/mnt/data/のみを許可

私はsshd_configMatch Userの使用を許可していることを確認します。つまり、

Match User john
  ChrootDirectory /mnt/data/
  ForceCommand internal-sftp
  AllowTCPForwarding no
  X11Forwarding no

しかし、どうすればroot以外のすべてのユーザーを一致させることができますか?

8
Martin Vegter

sshの構成ファイルのMatchディレクティブは否定をサポートしています。しかし、sshd_configの条件を否定することは少しトリッキーであるように見えます:書く必要があります

Match User="!root,*"

rootを除くすべてのユーザーに後続のディレクティブを適用する。

関連ドキュメントは次のとおりです:man sshd_configから:

一致条件付きブロックを導入します。
...
一致パターンは、単一のエントリまたはカンマ区切りのリストで構成でき、ssh_config(5)のパターンセクションで説明されているワイルドカードと否定演算子を使用できます。

そしてman ssh_configから:

パターン
パターンは、ゼロ個以上の空白以外の文字、 ‘*’(ゼロ個以上の文字と一致するワイルドカード)、または ‘?’(厳密に1文字と一致するワイルドカード)で構成されます。
...
否定された一致がそれ自体で肯定的な結果を生成することは決してないことに注意してください。
たとえば、「Host3」を次のパターンリストと照合しようとすると失敗します。

from="!Host1,!Host2"

ここでの解決策は、ワイルドカードのように、正の一致をもたらす用語を含めることです。

from="!Host1,!Host2,*"

Red Hatカスタマーポータルの この記事 にあるヒント。

12
fra-san