Así que estoy en una instalación VPS - CentOS Linux. Tengo vsFTPd en el servidor. Actualmente tengo acceso SFTP al servidor a través de mi usuario root, pero ahora estoy tratando de crear un nuevo usuario con acceso FTP a un directorio específico solo en el servidor, he hecho lo siguiente:
1. mkdir /var/www/mydomain.com
2. mkdir /var/www/mydomain.com/html
3. useradd <-username>
4. passwd <-username>
5. chown –R <-username> /var/www/mydomain.com
5. groupadd <-groupname>
6. gpasswd -a <-username> <-groupname>
7. chgrp -R <-groupname> /var/www/mydomain.com
8. chmod -R g+rw /var/www/mydomain.com
Lo que me cuesta hacer es crear el usuario para que SOLO tenga acceso /var/www/mydomain.com
. Observé que el usuario inicia sesión correctamente en la carpeta correcta, sin embargo, el usuario puede navegar "hacia atrás" a otros directorios. Quiero que el usuario se pegue en la carpeta específica y no pueda "navegar" hacia atrás .
¿Algunas ideas?
He encontrado diferentes artículos sobre chrooting, pero simplemente no lo he descubierto para usarlo en los pasos incluidos anteriormente.
Respuestas:
Es bastante simple.
Debe agregar la siguiente opción en el archivo vsftpd.conf
La documentación dentro del archivo de configuración se explica por sí misma:
Esto significa que el usuario solo tendrá acceso a la carpeta que configuró como INICIO del usuario. A continuación, tengo un ejemplo de una entrada de usuario passwd:
Establezca el directorio de inicio del usuario con el siguiente comando
Nota: en mi ejemplo, este usuario también es un usuario válido para algunas tareas programadas dentro de Linux. Si no tiene esta necesidad, cambie el shell del usuario a en
/sbin/nologin
lugar debash
.fuente
/etc/passwd
archivo, que representa a un usuario llamado upload_ftp, 1001: 1001 es su ID de usuario e ID de grupo, / var / www / sites es el directorio de inicio del usuario (y el parámetro que lee vsftpd) y / bin / bash, el shell. Probablemente lo que falta en su caso es un directorio inicial para el usuario, y que podría ser resuelto con el siguiente comando:usermod -d /var/www/mydomain.com <username>
. Saludos :)Después de que haya cambiado su configuración para incluir
chroot_local_user=YES
Puede cambiar el shell del usuario
/usr/sbin/nologin
para que, si la contraseña se pierde, haya mitigado algunos riesgos (configure también el directorio de inicio). El shell también debe figurar en la lista/etc/shells
o la autenticación fallará.https://security.appspot.com/vsftpd/FAQ.txt
fuente
Estos son los pasos para configurar un usuario y permitir el acceso del usuario solo a través de FTP (es decir, sin SSH) y también limitar el acceso a un directorio específico (inicio del usuario) en proftpd :
Añadir nuevo usuario:
adduser newusername
Configurar la clave:
passwd newusername
Modifique el directorio de inicio del usuario de forma predeterminada a una nueva carpeta:
usermod -d /target/directory username
Editar
shells
archivo:vi /etc/shells
y agregar/dev/null
al finalModifique la
newusername
entrada en elpasswd
archivo:vi /etc/passwd
para agregar/./
antes denewusername
que la entrada se vea así:newusername:x:502:502::/home/ftp/./newusernamehomedirectory/:/dev/null
Detalles para los pasos 4 y 5 aquí:
Editar
/etc/proftpd/proftpd.conf
archivo y descomentar la líneaDefaultRoot ~
fuente
Establezca los permisos de la carpeta raíz en 711 con su cuenta raíz.
fuente
Ejecute este comando:
fuente