ChrootされたSFTPの作成方法に関するチュートリアルはたくさんありますが、単純にwget
、unzip
、mysql
およびmysqldump
は、FTPとphpMyAdminを投げるよりも。メソッドはクリーン(手動のldd
magicなし)で拡張可能でなければならないため、パッケージを簡単に追加およびアップグレードできます。
幸いにも、私はそれを行う方法を思いつくことができました。
ステップ1:chrootされたユーザーのグループを追加する
groupadd chrootusers
ステップ2:SSHの構成
nano /etc/ssh/sshd_config
交換する
Subsystem sftp /usr/libexec/openssh/sftp-server
と
Subsystem sftp internal-sftp
最後に貼り付け
Match Group chrootusers
ChrootDirectory /home/%u
走る
systemctl restart sshd
systemctl status sshd
ステップ3:ユーザーを追加
peter
を目的のユーザー名に変更します。
export NEW_USER_NAME=peter
useradd ${NEW_USER_NAME}
usermod -G chrootusers -d / ${NEW_USER_NAME}
passwd ${NEW_USER_NAME}
ステップ4:パッケージをインストールし、必要なディレクトリ構造を作成します
yum --installroot=/home/${NEW_USER_NAME} --releasever=7 --nogpg --disablerepo='*' --enablerepo=base install centos-release openssh-clients wget vi nano Zip unzip tar mariadb findutils iputils bind-utils rsync
ステップ5:マウントproc
およびdev
echo "none /home/${NEW_USER_NAME}/proc proc defaults 0 0" >> /etc/fstab
echo "/dev /home/${NEW_USER_NAME}/dev none bind 0 0" >> /etc/fstab
走る
mount -a
ステップ6:DNSサーバーの構成
echo "nameserver 8.8.8.8" >> /home/${NEW_USER_NAME}/etc/resolv.conf
echo "nameserver 8.8.4.4" >> /home/${NEW_USER_NAME}/etc/resolv.conf
それだけです
$NEW_USER_NAME
は現在のセッションにバインドされていることに注意してください!
別のユーザーを追加する場合は、ステップ3から開始します。
後でさらにパッケージをインストールするには、ステップ4と同じコマンドを使用します。
SSHを使用してログインすると、cannot find name for user ID x
のようなメッセージが表示されます。それらは無視しても安全ですが、それらを削除したい場合は、chrootでユーザーを複製する必要があります。
export NEW_USER_ID=$(id -u ${NEW_USER_NAME})
export NEW_USER_GROUP_ID=$(id -g ${NEW_USER_NAME})
chroot /home/${NEW_USER_NAME} /bin/bash -c 'useradd -u ${NEW_USER_ID} ${NEW_USER_NAME}'
chroot /home/${NEW_USER_NAME} /bin/bash -c 'groupadd -g ${NEW_USER_GROUP_ID} chrootusers'