Crear un nuevo usuario vsftpd y bloquearlo en (especificar) directorio de inicio / inicio

31

Necesito otorgar periódicamente acceso limitado y temporal a varios directorios en un servidor Linux CentOS que tenga instalado vsftp.

Creé un usuario usando useradd [user_name]y les di una contraseña usando passwd [password].

He creado un directorio /var/ftpy luego lo asocio al directorio al que deseo limitar el acceso.

¿Qué más debo hacer específicamente para asegurarme de que cuando este usuario inicie sesión en FTP, solo tenga acceso a este directorio, por favor?

zigojacko
fuente
Lo sentimos, pero ¿alguna vez has considerado comprobar vsftpd.conf?
jirib
Sí. Yo tengo. ¿No me dice cómo indicarle a un usuario específico que inicie sesión en un directorio específico ...?
zigojacko
1
¿Seguro? opción chroot_list_enable ... ¿O quiere anular un directorio diferente de $ HOME?
jirib
1
Quiero saber cómo declarar un directorio de inicio específico para un usuario específico. Lo he habilitado chroot_list_enabley creado /etc/vsftpd/chroot_list. Simplemente no sabía qué hacer a continuación.
zigojacko
Luego usermod para cambiar el homedir del usuario.
jirib

Respuestas:

44

Respuesta completa que resolvió mi pregunta para cualquier otra que esté después de un tutorial paso a paso ...

Instalar vsftpdusando esto como una guía .

  • Crear usuario con useradd [user_name].
  • Crear contraseña de usuario con passwd [user_name]. (Se le pedirá que especifique la contraseña).
  • Cree un directorio FTP /var/ftpy luego enlácese al directorio 'principal' que desea especificar para este usuario mount --bind /var/www/vhosts/domain.com/ /var/ftp/custom_name/.
  • Cambiar el directorio de inicio del usuario con usermod -d /var/ftp/custom_name/ user_name

    En /etc/vsftpd/vsftpd.conf, asegúrese de que todo lo siguiente esté configurado: -

    • chroot_local_user = YES
    • chroot_list_enable = YES
    • chroot_list_file = / etc / vsftpd.chroot_list

Solo enumere los usuarios en el vsftpd.chroot_listarchivo si desea que tengan acceso completo a cualquier parte del servidor. Al no incluirlos en este archivo, usted dice restringir a todos los vsftpdusuarios a su directorio particular especificado.

En otras palabras (para referencia): -

  1. significa que, de forma predeterminada, TODOS los usuarios quedan excluidos excepto los usuarios en el archivo ...
    • chroot_local_user = YES
    • chroot_list_enable = YES
  2. significa que, de forma predeterminada, SOLO los usuarios en el archivo se cortan ...
    • chroot_local_user = NO
    • chroot_list_enable = YES
zigojacko
fuente
¿Por qué no configurar el directorio de inicio de ese usuario directamente /var/www/vhosts/domain.com/? ¿Hay algún problema con eso (como cualquier riesgo potencial)?
Leemes
2
Me acabo de enterar que vsftp parece prohibir otorgar permisos de escritura a un usuario ftp en el nivel superior de chroot por razones de seguridad (pero no estoy 100% seguro). Entonces, esa podría ser una razón para tener esta "indirección" con el fin de otorgarle al usuario ftp acceso de escritura a una carpeta específica sin permitirle ver ninguna carpeta hermana (lo que sería el caso si simplemente configura su nivel de inicio en un nivel superior, lo que evita el problema mencionado). (ver ubuntuforums.org/… )
leemes
2
@zigojacko ¿su usuario solo ve su directorio de inicio asignado? Para mí, esto predetermina al usuario al directorio asignado, pero aún pueden ver otras carpetas y pueden husmear hasta la raíz, aunque solo con acceso de lectura.
GraehamF
1
Esta respuesta, en combinación con unix.stackexchange.com/questions/208960/… fue la respuesta completa para mí. Terminé creando un usuario en un grupo y limité el acceso del grupo al directorio deseado.
GraehamF
10

Para mí no funcionó incluso después de lo anterior. Ya había un local_root establecido en un directorio, y lo que sea que haga, el directorio del usuario no ha sido encarcelado. Finalmente se trabaja después de solo cambiado

chroot_local_user = YES

Y siguiendo el procedimiento

  1. vi /etc/vsftpd.conf
  2. Agregue la línea 'user_config_dir = / etc / vsftpd_user_conf' (sin comillas)
  3. mkdir / etc / vsftpd_user_conf;
  4. cd / etc / vsftpd_user_conf
  5. vi nombre_usuario;
  6. Ingrese la línea 'raíz_local = / srv / ftp / nombre_usuario'

Solo mis dos centavos si alguien más tuvo el mismo problema.

gnaanaa
fuente
Seguí este procedimiento para cambiar el directorio raíz de vsftpd, incluidos los pasos adicionales de gnaanaa. Lamentablemente, todavía no funciona. Filezilla informa 530 Inicio de sesión incorrecto. El usuario y la contraseña están de acuerdo con el procedimiento anterior (nombre_de_usuario). Creé un usuario de prueba ftp2 y configuré su contraseña. El inicio de sesión normal de Filezilla utiliza ese nombre de usuario y contraseña. También configuré el directorio raíz de solo lectura, y creé un directorio de nivel inferior con permisos de escritura de acuerdo con esta publicación, estoy usando Ubuntu 16.04 si eso hace alguna diferencia.
tim11g
Estoy usando Ubuntu 16.04 si eso hace alguna diferencia, @gnaanaa. También pensé que era extraño que no hubiera un directorio ftp en / var. Entonces tuve que crear / var / ftp, y luego / var / ftp / user_name. code<br/> Respuesta: 220 (vsFTPd 3.0.3) <br/> Comando: USUARIO ftp2 <br/> Respuesta: 331 Por favor, especifique la contraseña. <br/> Comando: PASS ***** <br/> Respuesta : 530 Inicio de sesión incorrecto. <br/> Error: Error crítico: No se pudo conectar al servidor <br/>code
tim11g
En primer lugar, mire por qué no pudo iniciar sesión en el servidor. Puede depurar el problema con el encarcelamiento solo después de iniciar sesión correctamente. Aclamaciones.
gnaanaa
¿Vsftp usa un usuario / contraseña diferente en comparación con las cuentas en la máquina? Descubrí que las contraseñas smb tenían que establecerse por separado con smbpasswd -a. ¿Vsftpd funciona de la misma manera?
tim11g
No, es la cuenta de usuario del sistema. compruebe esta respuesta: askubuntu.com/questions/413677/vsftpd-530-login-incorrect
gnaanaa