Documentación
Cómo crear un usuario SFTP encarcelado (causa de raíz)
Nota importante para los usuarios de AWS Marketplace:
Si no ha habilitado la cuenta de raíz en su servidor Marketplace, entonces necesitará ejecutar los comandos siguientes con sudo. La forma más fácil de hacer que está dentro de una cáscara de sudo y salida cuando se haya terminado. Por ejemplo, comience con el siguiente comando:
sudo su
Y cuando termine:
exit
Aquí vamos...
Todo TurnKey appliances viene con SFTP preconfigurado y habilitado. Sin embargo, por defecto todos los usuarios tienen acceso a todo el sistema de archivos. Mientras no le importe leer archivos, que no sea un problema ya que por defecto los nuevos usuarios no privilegiados no tienen acceso a escribir en cualquier lugar excepto su directorio de inicio (generalmente /home/USERNAME), más donde les dé acceso explícitamente a escribir. Adicionalmente, como SFTP es proporcionado por SSH, por defecto también pueden conectarse a una concha SSH. Lo que pueden hacer será otra vez limitado, pero esto todavía no es deseable.
Así que en un escenario donde sólo desea que los usuarios de SFTP se inicien a través de SFTP (y no SSH) y desea que se bloqueen en su propio directorio (es decir,. conocido como una "caja de raíz") entonces usted puede configurar SSH/SFTP para hacer eso.
A continuación he dado los comandos requeridos. Están en forma de script así que pueden copiarse/pasted a la línea de comandos. Por favor note, he tratado de hacer los comandos idempotent (es decir, No romperá las cosas si las ejecutas varias veces) pero no lo he probado ampliamente. Así que si reimprimes partes de ella, hay una posibilidad de que tengas resultados inesperados. Los comandos relacionados con el usuario pueden ser repetidos para un nuevo usuario (cambiando el valor de NEW_USER), pero añadiendo el grupo sftp_users y el config SSH, sólo debe hacerse una vez. Si necesita ajustar la configuración de configuración de SSH, le recomiendo que edite el archivo de configuración manualmente.
Corre una vez
Crear el grupo requerido:
groupadd sftp_users
Correr una vez por nuevo usuario
Añadir un nuevo usuario. Estoy usando el nombre de "newuser" aquí pero puedes usar cualquier nombre que quieras, aunque te sugiero que uses sólo caracteres de minúsculas sin espacios ni caracteres especiales. Si desea agregar usuarios adicionales, cambie el valor de "NEW_USER" (en la primera línea a continuación):
NEW_USER="newuser" useradd -G sftp_users -s /sbin/nologin $NEW_USER passwd $NEW_USER
Una vez que haya establecido una contraseña para el nuevo usuario y lo haya confirmado, después complete la creación de la nueva cuenta de usuario:
mkdir -p /home/$NEW_USER/files chown root:root /home/$NEW_USER chown $NEW_USER:$NEW_USER /home/$NEW_USER/files chmod 700 /home/$NEW_USER/files usermod -d /files $NEW_USER
¡Corre sólo una vez!
A continuación, necesitamos reconfigurar SSH/SFTP. Para ello necesitamos editar el archivo de configuración SSH (/etc/ssh/sshd_config). Para hacerlo fácil, lo he proporcionado en forma de script . Por favor, tenga en cuenta que esto sólo debe hacerse una vez.:
CONF=/etc/ssh/sshd_config
SEARCH="Subsystem sftp \/usr\/lib\/openssh\/sftp-server"
NEW_LINE="Subsystem sftp internal-sftp"
sed -i "/^$SEARCH/ s|^|#|" $CONF
sed -i "/$NEW_LINE/d" $CONF
sed -i "/$SEARCH/a\\$NEW_LINE" $CONF
if ! grep "Match Group sftp_users" $CONF >/dev/null; then
cat >> $CONF <<EOF
Match Group sftp_users
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory /home/%u
ForceCommand internal-sftp
EOF
fi
Paso final está restarando SSH:
service ssh restart
Si necesita retocar más la configuración de SSH, por favor, edite el archivo de configuración manualmente utilizando un editor de texto como el nano.
nano /etc/ssh/sshd_config
El usuario automáticamente se desplazará hacia su hogar desgarrado (/home/user/files). Podrán acceder al directorio padre (/home/user) pero no tendrá nada más que el acceso leído allí (y no puede navegar por más alto).
Notas adicionales: Si desea permitir a su usuario de chrooted SFTP un poco más de flexibilidad (por ejemplo, permitir scp y/o rsync), entonces en lugar de darles una concha /sbin/nologin, instalar rssh (apt-get install rssh) y darles una concha /usr/bin/rssh.