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

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

サーバーでは、ルートへの無制限のSSHアクセスが必要で、他のすべてのユーザーへの制限付きアクセスが必要です。

ルート以外のすべてのユーザーを制限したいです。

  • SSHログインがありません
  • /mnt/data/マウントのみ許可されます。sshfs

sshd_config次のように使用が許可されていることを確認しましたMatch User

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

しかし、ルート以外のすべてのユーザーを一致させるには?

答え1

ssh構成ファイルの一致ディレクティブは否定をサポートします。しかし、否定的な条件は少しsshd_configトリッキーなようです。

Match User="!root,*"

ルートを除くすべてのユーザーに後続のディレクティブを適用します。

関連文書は次のとおりですman sshd_config

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

そして次からman ssh_config

パターン
パターンは、ゼロ個以上の空白以外の文字、「*」(0個以上の文字に一致するワイルドカード)、または「?」(正確に1文字に一致するワイルドカード)で構成されます。
...
否定的な一致自体だけでは、肯定的な結果を得ることはできません。
たとえば、「host3」を次のパターンリストと一致させようとすると失敗します。

from="!host1,!host2"

ここで回避策は、ワイルドカードなどの肯定的な一致を生成する用語を含めることです。

from="!host1,!host2,*"

ヒントが見つかりました。この記事Red Hat カスタマーポータルで。

関連情報