有很多关于如何创build一个chroot的SFTP的教程,但是我想使用SSH,因为比起FTP和phpMyAdmin来说,简单的wget , unzip , mysql和mysqldump要快得多。 该方法也应该是干净的(没有手动ldd魔法)和可扩展的,所以我可以轻松地添加和升级包。
幸运的是,我能够想出办法做到这一点。
第1步:为chrooted用户添加一个组
groupadd chrootusers
步骤2:configurationSSH
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步:安装软件包并创build必要的目录结构
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步:configurationDNS服务器
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中相同的命令。
当使用SSHlogin时,您会看到类似于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'