educación, informática y demás

FTP

Usuarios anónimos: subiendo ficheros y creando directorios

Aunque no es lo habitual, podemos permitir que usuarios anónimos, es decir cualquiera que se conecte a nuestro FTP sin credenciales ninguna, pueda realizar operaciones de escritura. En concreto, se pueden permitir subidas de ficheros por un lado y creación de directorios por otro.

Para ello, el servidor FTP proporciona dos parámetros específicos, y deberíamos tener en cuanta otro parámetro general, como write_enable.

  • anonymous_enable 🙂
  • anon_upload_enable
  • anon_mkdir_write_enable

Es decir, si queremos habilitar la subida de ficheros y creación de directorio por parte de usuarios anónimos tendremos que habilitar esos tres parámetros.

Una vez realizado el cambio en el fichero de configuración, guardamos y reiniciamos el servidor para que los cambios surtan efecto.

Reiniciamos el servicio para que se cargue la nueva configuración.

¡Spoiler! Esto no va a funcionar, ahora veremos por qué. No tiene que ver con la configuración.

Vamos a probar a conectarnos a nuestro servidor FTP con un usuario anónimo.

No podemos crear directorios en el raíz público del FTP con usuario anónimo

No podemos crear un directorio con el usuario anónimo porque los permisos del directorio /srv/ftp nos lo impiden. Cuando accedemos con un usuario anónimo, el servidor FTP utiliza el usuario ftp para acceder al sistema de ficheros. Por tanto, si el usuario ftp no tiene permiso de escritura, no va a poder escribir.

Vamos a comprobar que ese es el problema.

Los permisos en rojo serían los permisos que se aplican al usuario ftp en cada uno de los directorios y ficheros disponibles en el servidor ftp así como el directorio ráiz.

Vamos a proporcionar permiso de escritura al grupo (ftp) del directorio /srv/ftp

Con estos permisos el grupo ftp podrá escribir dentro del directorio

¿Tenemos que reiniciar el servidor? No, solo hemos cambiado permisos en un directorio, no hemos tocado ningún fichero de configuración.

Ahora vamos a probar si, por fin, podemos escribir 🙂

No nos deja iniciar sesión con permisos de escritura en el raíz por motivos de seguridad.

Solución: Creando un directorio para los usuario anónimos

No podemos configurar el directorio ráiz del ftp público con permisos de escritura para los usuarios anónimos por motivos de seguridad. En realidad, este problema lo vamos a tener también con los usuarios locales si pretendemos encerrarlos en su directorio personal (ya lo veremos).

La solución más simple, garantizando la seguridad, es crear un directorio propio para que los usuarios anónimos puedan subir ficheros.

Quitamos el permiso de escritura al grupo ftp en el directorio raíz

Ahora vamos a crear el directorio, por ejemplo anonimos, dentro del directorio /srv/ftp.

Ya hemos creado el directorio, pero con esos permisos el único que puede acceder para escribir es el propietario, que es root.

Vamos a cambiar el propietario para que el usuario ftp, que será el usuario que acceda al ftp cuando se produzcan accesos anónimos pueda acceder.

Esta configuración permite que usuarios anónimos puedan subir ficheros y crear directorios, pero todavía presenta algún problema. Vamos a verlo.

¡Podemos acceder! Vamos a realizar alguna operación de escritura.

Creamos un directorio dentro del directorio /anonimos del ftp.

Vamos a intentar entrar 🙂

Volvemos hacia atrás, al directorio /anonimos y vamos a echar un vistazo a los permisos del directorio creado.

De hecho, vamos a echar un vistazo a los permisos del directorio creado dentro del sistema de ficheros dónde está instalado el servidor ftp.

Solo el usuario ftp tendrá acceso a este directorio. Esto está bien si solo queremos que accedan usuarios anónimos desde el FTP, pero ¿qué sucede si intenta acceder un usuario del sistema, como marinapg? Simplemente, no podrá acceder. Es más, nosotros ahora no podemos acceder.

No tenemos permiso de acceso :_(

Solución: Máscara para usuarios anónimos

Vamos a configurar la máscara de creación de ficheros y directorios de usuarios anónimos de forma que cualquier usuario pueda acceder a los ficheros y directorios creados por este tipo de usuarios a través del FTP.

El tipo de permisos que le demos dependerá de nuestras necesidades, o del enunciado del ejercicio que estemos realizando. Vamos a aprender a configurar esta máscara. Para ello, tendremos que utilizar el parámetro anon_umask, pero este parámetro no está en el fichero de configuración, así que vamos a buscarlo en la página de manual.

Ejercicio: Configura el servidor FTP para que los usuarios anónimos cuando suban ficheros o creen directorios los permisos que se apliquen sean rwx-r-xr-x en el caso de directorios y rw-r–r– en el caso de ficheros.

Solución: Cómo tenemos que poner una máscara inversa, o umask, numérica lo primero que deberíamos hacer es tener claro qué máscara queremos aplicar a los ficheros y directorios. En realidad, vamos a definir la máscara que se le da al directorio que será 755 (rwxr-xr-x), la inversar sería: 022

  • Mask: 111 101 101
  • UMask: 000 010 010

Ahora tan solo tenemos que añadir el parámetro de configuración anon_umask al fichero de configuración.

Añadimos la línea de configuración

Guardamos los cambios y reiniciamos el servidor FTP con systemctl.

Ahora nos conectamos desde el cliente FTP desde Windows y vamos a crear un directorio y subir un fichero con usuario anónimo.

Vamos a ver los permisos en el directorio /srv/ftp/anonimos

Dejar una respuesta