debootstrap を使用すると、指定ディレクトリ配下にDebian環境をインストールすることができます。
SSHログイン後のルートディレクトリを「debootstrap」で環境を設定したディレクトリとすることにより、指定のユーザのみ別のルートディレクトリ(別環境として)を見せることが可能になります。
■指定ユーザのルートディレクトリの環境設定
# debootstrapで環境をインストールするディレクトリ
WORK_HOME=/tmp/home/
# 今回は指定グループに所属するユーザのみ隔離します
WORK_GROUP=test_group
# 必要なパッケージ
apt install -y debootstrap
# 隔離対象となるグループを作成
groupadd ${WORK_GROUP}
# 環境をインストールするディレクトリを作成
mkdir ${WORK_HOME}
# 環境を設定(includeなどは調整してください)
debootstrap --arch amd64 --variant buildd --include=apt,wget,openssh-client sid ${WORK_HOME} http://ftp.jp.debian.org/debian
cp -f /etc/apt/sources.list ${WORK_HOME}etc/apt/sources.list
# chrootの設定を行います
# 「Match group」はグループに対する指定になります
# 「Match user」に変更するとユーザに対する指定になります
# ※アスタリスクを使用することが可能です
{ \
echo ''; \
echo "Match group ${WORK_GROUP}"; \
echo ' X11Forwarding yes'; \
echo ' AllowTcpForwarding yes'; \
echo " ChrootDirectory ${WORK_HOME}"; \
} >> /etc/ssh/sshd_config
# SSHの設定再読込
service sshd reload
■指定ディレクトリのみ見せたいユーザを追加
# ※rootユーザで追加することを想定しています
# 「test_user」を追加します
WORK_USER=test_user
# 「test_group」のグループに所属させるとルートディレクトリが変わります
WORK_GROUP=test_group
# 別環境を整えたディレクトリ
WORK_HOME=/tmp/home/
# ユーザ追加は詳しくは関連情報を参照してください
adduser ${WORK_USER}
usermod -aG ${WORK_GROUP} ${WORK_USER}
# ユーザやグループ情報を変更した場合、「debootstrap」で環境を整えたディレクトリにも反映をする必要があります
# 下記ファイルをコピーしなかった場合、SSHログインは出来ますがファイルのSCP転送などが出来ません
cp -f /etc/passwd ${WORK_HOME}etc/passwd
cp -f /etc/group ${WORK_HOME}etc/group
■使用例
例えば、rootユーザでApacheをインストールしApacheの設定を行っているとします。
作業者のユーザAさんには「HTML」を操作してほしいですが、全体の環境は触れなくしたいなどで使用できます。
※FTP設定などでも可能ですが、例えばの話です。
※指定ディレクトリの環境を壊すことはできますが、作り直しは簡単です