Hola, el otro día configure un ftp con autenticación de usuarios, el problema era que
no podía usar ninguna base de datos para guardar los usuarios así como tampoco los usuarios locales del linux por lo que me decante por el proftpd con usuarios virtuales y aquí esta el como lo hice:
Primero instalamos el
servicio con el siguiente comando:
sudo
apt-get install proftpd
Instalaremos el servicio y
pasamos a configurarlo, nos dirigimos a la carpeta
donde están los ficheros de configuración del servicio.
cd
/etc/proftpd/
El
archivo principal de configuración es proftpd.conf. Es buena
práctica antes de comenzar a editar cualquier archivo de
configuración hacer una copia del archivo original.
sudo
cp proftpd.conf proftpd.conf.original
Pasamos a editar el
fichero de configuración del proftpd y analizaremos algunas opciones básicas aunque el objetivo de este manual no es explicar todas las
opciones del proftpd. En este manual solamente
configuraremos los usuarios y les asignaremos las carpetas a los
mismos.
sudo
vim proftpd.conf
Cambiar en “ServerName”
por el nombre de tu servidor
ServerName "Ubuntu"
Descomentar la siguiente opción para restringir los usuarios a su propio directorio, esto es
muy importante ya que previene que los usuarios puedan explorar otros
subdirectorios lo cual podria ser un problema de seguridad, claro depende de
la configuracion de cada cual, en nuestro caso lo descomentamos.
DefaultRoot
~
Descomentar la siguiente configuracion permitiendo que los usuarios no necesiten un Shell valido para entrar al sistema, en caso de necesitarlo no descomentarlo y seguir mas abajo.
RequireValidShell off
En caso de necesitar que
los usuarios tenga un shell valido pues agregaremos el shell
/bin/false a la lista de shell habilitados :
sudo
vim /etc/shells
Insertamos /bin/false al
finalizar de la lista y guardamos.
Agregamos también las
opciones que nos permiten autenticar con los ficheros de contraseñas
que crearemos a continuación
Autenticación con AuthUserFile, aquí le pasamos la ruta donde estará nuestro
fichero de contraseñas.´
AuthUserFile /etc/proftpd/ftpd.passwd
Aquí pasamos el orden en el cual el proftpd buscara si el usuario es valido, en nuestro caso solo tenemos el fichero AuthUserFile pero puede ser multiples opciones desde un ldap hasta la autenticación propia del unix, mas informacion al respecto aqui
AuthUserFile /etc/proftpd/ftpd.passwd
Aquí pasamos el orden en el cual el proftpd buscara si el usuario es valido, en nuestro caso solo tenemos el fichero AuthUserFile pero puede ser multiples opciones desde un ldap hasta la autenticación propia del unix, mas informacion al respecto aqui
AuthOrder
mod_auth_file.c
Salimos y guardamos
la configuración del proftpd.conf. Ahora pasaremos a configurar los
usuarios de nuestro ftp, para ello usaremos como herramienta a
ftpasswd la cual viene instalada por defecto con la instalación del
proftpd. Ftpasswd nos crea dos ficheros AuthUserFile
y AuthGroupFile los cuales contendrán nuestros usuarios y grupos semejando mucho a como nuestro
linux guarda la configuración de los usuarios.
ricardo@ricardo-pc:~$
sudo ftpasswd --passwd --name=usuario1 --uid=1050 --home=/srv/ftp
–shell=/bin/false
Donde:
name = Nombre del usuario
Home = Carpeta del usuario
Shell = Shell del usuario
Dicen
que una imagen vale mas que mil palabras
Configuramos todos los usuarios que queramos tener, es importante aumentarle el
“uid” y que no coincidan los mismos, ejemplo:
ricardo@ricardo-pc:~$
sudo ftpasswd --passwd --name=usuario2 --uid=1051 --home=/srv/ftp1
–shell=/bin/false
A continuación crearemos
un grupo y le agregaremos los usuarios creados.
ricardo@ricardo-pc:~$
sudo ftpasswd --group --name=ftpd --gid=1030 --member=usuario1
--member=usuario2
Importante:
La ejecución del
comando “ftpasswd” debe ser dentro del directorio “/etc/proftpd/”
sino se crearía el fichero ftpd.passwd en el directorio donde se
ejecuto el comando y el proftpd no seria capaz de leer la configuración.
Pasamos
a crear las carpetas para los usuarios.
sudo mkdir
/srv/ftp
sudo mkdir /srv/ftp1
Le asignamos los permisos
correspondientes a la carpeta.
$ sudo chmod 777 /srv/ftp
$ sudo chmod 777 /srv/ftp1
Reiniciamos y ya tenemos nuestro ftp
funcionando con usuarios virtuales.
Si de manera opcional deseamos crear un usuario con permiso de solo lectura a una carpeta en especifico. Seguimos los pasos antes mostrados y le agregamos al proftpd.conf las siguientes lineas
# # Limit WRITE
everywhere in the anonymous chroot
<Directory
/data/ftp_base/ftp_enviro/enviro_upload/>
<Limit WRITE>
DenyUser NombreDeUsuario // Aqui ponemos el usuario que no tendra permiso de escritura.
Limit>
Directory>
Eso es todo espero les funcione y de ser así dejen su comentario. Saludos
hola, cómo puedo crear un grupo con permiso de solo lectura a una carpeta en especifico?
ResponderEliminar