
Existem muitos tutoriais sobre como criar um SFTP com chroot, mas eu gostaria de usar SSH, porque é muito mais rápido simplesmente usar wget
, e unzip
do que usar FTP e phpMyAdmin. O método também deve ser limpo (sem a magia manual) e extensível, para que eu possa adicionar e atualizar pacotes facilmente.mysql
mysqldump
ldd
Responder1
Felizmente, consegui descobrir uma maneira de fazer isso.
Etapa 1: adicionar um grupo para usuários com chroot
groupadd chrootusers
Etapa 2: configurar o SSH
nano /etc/ssh/sshd_config
Substituir
Subsystem sftp /usr/libexec/openssh/sftp-server
Com
Subsystem sftp internal-sftp
Colar no final
Match Group chrootusers
ChrootDirectory /home/%u
Correr
systemctl restart sshd
systemctl status sshd
Etapa 3: adicionar um usuário
Mude peter
para o nome de usuário desejado.
export NEW_USER_NAME=peter
useradd ${NEW_USER_NAME}
usermod -G chrootusers -d / ${NEW_USER_NAME}
passwd ${NEW_USER_NAME}
Etapa 4: instale os pacotes e crie a estrutura de diretórios necessária
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
Etapa 5: montar proc
edev
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
Correr
mount -a
Etapa 6: configurar os servidores 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
Isso é tudo.
Lembre-se de que isso $NEW_USER_NAME
está vinculado à sessão atual!
Comece na Etapa 3 ao adicionar outro usuário.
Para instalar mais pacotes posteriormente, use o mesmo comando da Etapa 4.
Ao fazer login usando SSH, você receberá mensagens como cannot find name for user ID x
. É seguro ignorá-los, mas se quiser se livrar deles, você precisará duplicar o usuário no 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'