
He seguido media docena de tutoriales diferentes sobre cómo configurar chroot para usuarios de sftp, pero mis usuarios encarcelados aún pueden navegar hasta los directorios principales. Sospecho que mis permisos no están configurados correctamente, porque esta es la parte que más varía entre los tutoriales. Esto es lo que he hecho hasta ahora:
1) Estoy usando CentOS 5.6, donde el OpenSSH predeterminado es la versión 4.3, así que instalé manualmente la última versión 5.x. Al ejecutar sshd -v ahora se devuelve OpenSSH_5.9p1, OpenSSL 0.9.8e-fips-rhel5.
2) Edité /etc/ssh/sshd_config para cambiar Subsystem sftp a internal-sftp y agregué:
Match user guest
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
3) sshd reiniciado.
4) Creó un usuario "invitado" con el directorio de inicio /var/www/uploads/guest.
5) /var/www/uploads es propiedad de root:root con modo 755.
6) /var/www/uploads/guest es propiedad de guest:root con modo 755.
Usando el cliente Transmit sftp en mi Mac, inicié sesión con el usuario invitado. Abre el directorio de inicio del usuario de forma predeterminada, pero luego puedo navegar por los niveles del directorio y explorar otros directorios en el servidor.
Algunos tutoriales dicen que /var/www/uploads debería tener el modo 700 o 750; Si hago esto, aún puedo iniciar sesión como usuario invitado, pero veo el directorio raíz del servidor de forma predeterminada y puedo explorar todos los demás directorios.
Otros tutoriales dicen que debería cambiar el shell del usuario invitado a /bin/false; Si hago esto, no puedo iniciar sesión como usuario invitado. La transmisión dice "El servidor no aceptó el nombre de usuario o la contraseña" y el cliente sftp de línea de comandos dice "Conexión cerrada" después de ingresar la contraseña.
Creo que lo he intentado todo. ¿Alguien puede ver lo que falta?
Respuesta1
Parece que ChrootDirectory debería apuntar a un nivel POR ENCIMA del directorio de inicio.
Entonces, dado que la casa del huésped es/var/www/uploads/guest, entonces elDirectorioChrootdebería señalar a/var/www/subidas
Eso es QUIZÁS.... se me ocurrió otro pensamiento:
Instalaste manualmente el openssh más nuevo, ¿eliminaste la versión anterior? ¿Dónde se instaló la nueva versión? a veces, si no tienes cuidado, se instalarán cosas nuevas en/usr/local/en lugar de/usr, lo que significa que el servidor habilitado para sftp está leyendo sus archivos de configuración de/usr/local/etc/ssh/...en lugar de lo esperado/etc/ssh/...
Al menos algo que comprobar.
Respuesta2
Tuve problemas exactamente con el mismo problema, pero lo resolví configurando el directorio chrootasí como todos los directorios principalescon los siguientes permisos
1) Cambiar de propietario a root:
sudo chown root [directory]
2) Eliminar todos los permisos de escritura del grupo:
sudo chmod 755 [directory]
Lamentablemente, creo que eso significa que no puedes saltar directamente a una carpeta que no sea propiedad de root, pero estaré encantado de saber si alguien puede corregirme en esto.