Web サイトを構築する際、技術的な事にあまり明るくない人でも簡単に更新作業ができるよう、SFTP 専用ユーザーを用意する事も多いと思います。
そのユーザーに対しディレクトリの移動制限をかける際、どのような書き方があるかをまとめました。
よくあるディレクトリ制限の設定方法
軽くググってみると、/etc/ssh/sshd_config
に対して以下のように設定する方法がよく紹介されていますが…
1.Match User で直にユーザー名を指定して制限(非推奨)
Match User hoge
ChrootDirectory /home/hoge/dir
ForceCommand internal-sftp
Match User fuge
ChrootDirectory /home/fuge/dir
ForceCommand internal-sftp
…ユーザーが増えた時の管理の手間を考えると、この方法はあまりオススメできません。
2.Match group で制限
SFTP ユーザー専用のグループ(sftp
等) を作成し、Match group を利用して 1 つの設定で済ませるという方法です。
# -- 「sftp」グループに所属する全てのユーザーに対しChrootする
Match group sftp
ChrootDirectory ~
ForceCommand internal-sftp
分かりやすい考え方だと思います。
3.Match User のワイルドカードを活用して制限
SFTP ユーザー名には、特定の prefix(sftp-
等) を付けるというルールを設け、ワイルドカードを利用して 1 つの設定で済ませるという方法です。
# -- 「sftp-」から始まる全てのユーザーに対しChrootする
Match User sftp-*
ChrootDirectory ~
ForceCommand internal-sftp
これはこれでアリだと思います。
マイナーな(?)ディレクトリ制限の設定方法
こういう書き方もできるという事が、あまり紹介されていないようです。
# -- root以外の全てのユーザーに対しChrootする
Match User *,!root
ChrootDirectory ~
ForceCommand internal-sftp
使いどころは限られるかもしれませんが、知っておいても損はないのではないでしょうか。