
Hay muchos tutoriales sobre cómo crear un SFTP chroot, pero me gustaría usar SSH, porque es mucho más rápido simplemente usar , y wget
que unzip
usar FTP y phpMyAdmin. El método también debe ser limpio (sin magia manual ) y extensible, para poder agregar y actualizar paquetes fácilmente.mysql
mysqldump
ldd
Respuesta1
Afortunadamente, pude encontrar una manera de hacerlo.
Paso 1: agrega un grupo para usuarios chrooteados
groupadd chrootusers
Paso 2: configurar SSH
nano /etc/ssh/sshd_config
Reemplazar
Subsystem sftp /usr/libexec/openssh/sftp-server
Con
Subsystem sftp internal-sftp
Pegar al final
Match Group chrootusers
ChrootDirectory /home/%u
Correr
systemctl restart sshd
systemctl status sshd
Paso 3: agrega un usuario
Cambie peter
a su nombre de usuario deseado.
export NEW_USER_NAME=peter
useradd ${NEW_USER_NAME}
usermod -G chrootusers -d / ${NEW_USER_NAME}
passwd ${NEW_USER_NAME}
Paso 4: instale los paquetes y cree la estructura de directorios necesaria
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
Paso 5: montar proc
ydev
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
Paso 6: configurar los 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
Eso es todo.
¡Tenga en cuenta que $NEW_USER_NAME
está vinculado a la sesión actual!
Comience desde el Paso 3 cuando agregue otro usuario.
Para instalar más paquetes más adelante, utilice el mismo comando que en el Paso 4.
Al iniciar sesión mediante SSH, recibirás mensajes como cannot find name for user ID x
. Es seguro ignorarlos, pero si desea deshacerse de ellos, deberá duplicar el usuario en 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'