
有很多關於如何創建 chrooted SFTP 的教程,但我想使用 SSH,因為它比簡單地折騰wget
FTPunzip
和phpMyAdmin 要快得多。該方法也應該是乾淨的(無需手動魔法)並且可擴展,因此我可以輕鬆添加和升級套件。mysql
mysqldump
ldd
答案1
幸運的是,我能夠想出一種方法來做到這一點。
第 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'