LoginSignup
0
0

More than 1 year has passed since last update.

DebianにSSHでログイン後、指定ディレクトリの配下のみしか操作をさせない

Posted at

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設定などでも可能ですが、例えばの話です。
※指定ディレクトリの環境を壊すことはできますが、作り直しは簡単です

■関連情報

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0