
En Debian Wheezy de 64 bits, creo un nuevo usuario para que un cliente coloque archivos en un directorio. Una vez creado el usuario, elimino su inicio de sesión interactivo reemplazándolo /bin/bash
con /bin/false
in /etc/passwd
. Luego lo agrego a /etc/ftpchroot
, para que su sesión se dirija a su directorio de inicio.
Sin embargo, tan pronto como agrego al usuario /etc/ftpchroot
, cuando el usuario inicia sesión, no puede ver ningún archivo. El usuario tiene un chroot, no puede subir. Puede cargar archivos, que se almacenan en el directorio correcto, y con permisos 640 y propiedad de ese usuario: ese grupo de usuarios.
Mis pensamientos hasta ahora:
/etc/ftpchroot
está claramente haciendo algo y haciendo lo que debe hacer.- Cualquier usuario creado en esa máquina tiene este problema (lo intenté dos veces con otros usuarios nuevos)
- No depende del directorio. Alterar su directorio de inicio y hacer chroot allí muestra el mismo problema.
Es extraño para mí ya que he hecho esto varias veces antes y nunca me había encontrado con esto. Lamentablemente, buscar una respuesta en Google es difícil debido a la problemática descripción del problema.
Edición 1: Algo que estoy viendo ahora. Al iniciar sesión en ftpchroot, no se muestra ningún mensaje cuando el inicio de sesión se completa correctamente. Sin embargo, /etc/motd
se muestra el inicio de sesión sin ftpchroot después de completar la autenticación.
Edición 2: he solucionado el problema instalando inetutils-ftpd
. Trajo autenticación PAM y, después de configurarla, inicia sesión con el mismo usuario sin el problema mencionado y puede cargar y ver sus archivos sin problemas.
Respuesta1
Cuando usas chroot, cualquier binario que quieras usar dentro del chroot debe existir dentro de ese chroot. En el caso de ftpchroot, esto generalmente significa que ftpd necesita tener ls
capacidades dentro de su propio binario en lugar de depender del /bin/ls
sistema; de lo contrario, cada usuario tendría que tener las suyas propias $HOME/bin/ls
.
Entonces, la solución es usar un demonio ftp que tenga ls
incorporado (o volver a compilarlo con --ls-included, o cualquiera que sea la opción apropiada para este demonio ftp en particular).