Professional Documents
Culture Documents
Capítulo 29:
El Servidor FTP
• ¿Qué es FTP?
• ¿Cómo configurar el servicio?
• ¿Cómo conectarme al servicio?
• ¿Cómo usar el servicio?
• Comandos FTP según RFC 959.
• Códigos de respuestas del servidor FTP.
• Recursos adicionales.
Sistema Operativo Linux
Capítulo 29: El Servidor FTP
Servidor FTP
29.1. ¿Qué es FTP?
El protocolo de transferencia de archivos FTP (File Transfer Protocol) es un protocolo muy
utilizado para realizar transferencias de archivos entre sistemas remotos.
El nombre del servicio FTP de este estudio es Very Secure File Transfer Protocol (Protocolo de
transferencia de archivos muy seguro), cuyo servidor es vsftpd (Very Secure FTP Daemon).
Este servidor puede ser lanzado vía el super demonio (léase super servidor) xinetd. Alternativamente
vsftpd puede ser lanzado en modo autónomo, en cuyo caso vsftpd por si mismo escuchará a la
red. Este último modo es fácil de usar y se recomienda. Este es activado al fijar listen=YES en
el archivo de configuración del servidor vsftp:
/etc/vsftpd/vsftpd.conf: La ejecución directa del binario vsftpd lanzará el servicio FTP y estará
listo para las conexiones de los clientes.
Sistema Operativo Linux
Capítulo 29: El Servidor FTP
#anon_upload_enable=YES
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
#anon_mkdir_write_enable=YES
#
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
dirmessage_enable=YES
#
# Activate logging of uploads/downloads.
xferlog_enable=YES
#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES
#
# If you want, you can arrange for uploaded anonymous files to be owned by
# a different user. Note! Using “root” for uploaded files is not
# recommended!
#chown_uploads=YES
#chown_username=whoever
#
# You may override where the log file goes if you like. The default is shown
# below.
#xferlog_file=/var/log/vsftpd.log
#
# If you want, you can have your log file in standard ftpd xferlog format
xferlog_std_format=YES
#
# You may change the default value for timing out an idle session.
#idle_session_timeout=600
#
# You may change the default value for timing out a data connection.
#data_connection_timeout=120
#
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
#nopriv_user=ftpsecure
#
# Enable this and the server will recognise asynchronous ABOR requests. Not
# recommended for security (the code is non-trivial). Not enabling it,
Sistema Operativo Linux
Capítulo 29: El Servidor FTP
pam_service_name=vsftpd
userlist_enable=YES
#enable for standalone mode
listen=YES
tcp_wrappers=YES
Sistema Operativo Linux
• deny_file:
Se usa esta opción para impedir el acceso a determinados archivos y directorios. Puede utilizar
comodines. Por defecto no se fija nada. Veamos un ejemplo:
deny_file={*.mp3,*.mov,.private}
• dirlist_enable=YES:
Si se fija en NO, todos los comandos que listan directorios serán denegados.
• ftp_data_port=20:
Es el puerto desde el cual se origina un estilo de conexión PORT.
• guest_enable=NO:
Si está habilitado, todos los logins no anónimos serán clasificados como usuarios “invitados”.
Esta directiva va asociada a guest_username, que es donde definimos el nombre de
usuario.
• guest_username=ftp:
Vea el valor booleano asignado a guest_enable para una descripción o lo que constituye un
usuario invitado. Esta configuración es un usuario real que puede ser mapeado.
• listen=NO:
Si está habilitado, vsftpd iniciará en modo “standalone”. Esto quiere decir que no debe ser
iniciado por algún inetd, y en su lugar se ejecutará directamente.
• listen_address:
Si vsftpd se encuentra en modo standalone, indicamos la dirección IP en la que estará
escuchando.
• local_enable=NO:
Si está habilitada esta directiva permite que los usuarios locales (cuentas en /etc/passwd)
pueden acceder al servidor ftp.
• listen_port=21:
Si vsftpd está en modo standalone, este es el puerto por el cual escuchará a las conexiones
entrantes FTP.
• local_max_rate=0:
El valor cero o ilimitado indica la máxima transferencia de data permitida, en bytes por
segundo para usuarios que se autenticaron localmente.
• local_umask=077:
Es el valor de umask para usuarios locales, está expresado en enteros decimales.
Capítulo 29: El Servidor FTP
• local_root:
Esta opción representa un directorio al que vsftpd tratará de cambiar después de un login
local (no anónimo).
• max_clients=0:
El valor cero en esta directiva significa ilimitado. Si vsftpd está en modo standalone, este es el
máximo número de clientes que pueden conectarse. Cuando se conecten clientes adicionales
les aparecerá un mensaje de error.
• max_per_ip=0:
El valor cero en esta directiva significa ilimitado. Si vsftpd está en modo standalone, este es
el máximo número de clientes que pueden conectarse desde una misma dirección de internet.
Si se sobrepasa este límite aparecerá un mensaje de error.
• no_anon_password=NO:
Cuando está habilitado, previene al vsftpd de pedir por una contraseña.
• pam_service_name=ftp:
Indica el servicio PAM que usará vsftpd.
• secure_chroot_dir=/usr/share/empty:
Esta opción debería ser el nombre de un directorio que está vacio. También, el directorio no
debería ser escribible por el usuario ftp.
• tcp_wrappers=NO:
Si está habilitado, y vsftpd fue compilado con el soporte de tcp_wrappers, las conexiones de
entrada serán alimentadas a través del control de acceso tcp_wrappers.
• user_config_dir=/etc/vsftpd/users:
Es una poderosa opción que permite negar cualquier configuración especificada. Su uso es
simple por ejemplo: si configuró user_config_dir=/etc/vsftpd_user_conf, y se conecta como
el usuario “chris”, entonces vsftpd aplicará estas configuraciones del archivo /etc/vsftpd_
user_conf/chris, durante lo que dura la sesión.
• userlist_enable=NO:
Si está habilitado, los nombres de usuario que haya en el archivo indicado por userlist_file, no
podrán acceder, siendo rechazados ANTES de que introduzcan el password, de esta manera
evitamos que el password en claro de usuarios privilegiados, sean transmitidos por la red.
• userlist_file=/etc/vsftpd.user_list:
Esta opción es el nombre del archivo cargado cuando la opción userlist_enable está
activa.
Sistema Operativo Linux
29.3.1.1. Conexión desde una interfaz de comandos de línea (en un sistema XP)
Para acceder al servicio FTP ingrese en el prompt, el comando FTP.EXE seguido del nombre
completo de la computadora que presta el servicio o en su defecto su dirección IP. Veamos los
siguientes ejemplos:
D:\Documents and Settings\hharagons> ftp fedora3.iciuni.edu.pe
Si su sistema no cuenta con un DNS que le resuelva la dirección IP del servidor, entonces deberá
ingresar en el prompt la dirección IP del servidor, por ejemplo:
D:\Documents and Settings\hharagons> ftp 192.168.1.243
Tiene el mismo efecto que el comando que se aprecia en la figura 29.3. Para usar el servicio FTP
hay que contar con una cuenta de usuario en el servidor o en su defecto se puede usar la cuenta:
anonymous, que es una cuenta estándar en FTP. Si este es el caso después hay que ingresar una
contraseña con el formato de un correo electrónico.
El la figura siguiente se aprecia la conexión al servidor fedora3.iciuni.edu.pe. Puede apreciar que
el sistema le da la bienvenida y le informa de su nombre y dirección IP. Después del mensaje
de bienvenida el sistema pide una cuenta de usuario, en este caso se usa anonymous; más
adelante el sistema le pide que ingrese una contraseña, la cual debe tener el formato de un correo
electrónico.
11
Sistema Operativo Linux
12
Capítulo 29: El Servidor FTP
En la figura 29.4., se aprecia el acceso de un usuario del sistema Linux. Aprecie que el acceso ha
sido satisfactorio (230 Login successful.). El servidor FTP responderá con el prompt: ftp>.
Si desea ver la lista de comandos digite en el prompt: ? y presione la tecla Intro, el servidor FTP
responderá como se muestra en la figura 29.4.
Para acceder a un servidor FTP también se puede usar un navegador (browser) como el Microsoft
Internet Explorer. En la caja: Dirección, ingrese el protocolo FTP y el nombre del servidor FTP
como se muestra en la figura anterior.
Luego haga clic en el menú Archivo, después elija la opción: Iniciar sesión como, y el sistema
le presentará una ventana de acceso como se muestra en la figura 29.6. Para acceder al servicio
FTP ingrese una cuenta de usuario local o la cuenta anonymous. En cualquiera de los casos
el sistema le pedirá que ingrese una contraseña. Después de ingresar su contraseña de usuario
local o un correo electrónico en caso de haber elegido anonymous, presione Iniciar sesión para
acceder. Hecho esto el navegador le presentará una ventana de acceso como la que se muestra
en la figura 29.7.
13
Sistema Operativo Linux
14
Capítulo 29: El Servidor FTP
15
Sistema Operativo Linux
Estando ya en el ambiente FTP, el usuario hharagons ejecuta el comando pwd para mostrar el
directorio actual; luego ejecuta el comando dir, para ver el contenido de ese directorio y finalmente
ejecuta el comando lcd, que muestra el directorio local actual.
16
Capítulo 29: El Servidor FTP
Aprecie que muchos de los comandos ingresados al sistema responden con un código seguido de
un mensaje, como por ejemplo: si ingresa el comando dir verá los siguientes mensajes:
200 PORT command successful. Consider using PASV.
150 Here is come the directory listing.
::::::::::::::::::::::::::::::::::::::::::::::
226 Directory send OK.
Para saber cómo está predeterminado el servicio FTP, se ejecuta el comando status, que dice cuál
será su comportamiento durante las transferencias de archivos. En la figura 29.11. se aprecia que
el servicio FTP está preparado para hacer transferencias de tipo texto (Tipo: ascii).
Si usted es un usuario novato en el uso de FTP, probablemente deseará una ayuda en línea sobre
el uso de los comandos FTP; entonces ingrese en el prompt de FTP el signo ? y verá el despliegue
que se muestra en la figura 29.11.
También se puede ingresar el comando help, que muestra el mismo despliegue; y si desea una
explicación sencilla de lo que hace un comando cualquiera, entonces, digite: help mget, en el
caso de querer saber qué hace el comando mget.
En las siguientes figuras se muestra qué hace cada uno de los comandos de FTP. Por ejemplo en
la figura 29.12. se explica los comandos: !, ?, append, ascii, bell, binary, bye, cd y close.
17
Sistema Operativo Linux
En la figura 29.13., se explica los comandos: delete, debug, dir, disconnect, get, glob, hash,
help y lcd.
18
Capítulo 29: El Servidor FTP
En la figura 29.14. se explica los comandos: literal, ls, mdelete, mdir, mget, mkdir, mls, mput
y open.
En la figura 29.15., se explica los comandos: prompt, put, pwd, quit, quote, recv, remotehelp,
rename y rmdir.
19
Sistema Operativo Linux
En la figura 29.16., se explica los comandos: send, status, trace, type, user y verbose.
En la figura 29.17., se aprecia el uso del comando put, para transferir el archivo binario C:\
WINDOWS\NOTEPAD:EXE desde el computador local hacia el servidor FTP. Puede apreciarse
que se enviaron 57344 bytes en menos de un segundo. Si existiera en el destino una copia del
archivo, este sería reemplazado. Atención: en el servidor FTP se debe tener por lo menos los
permisos de lectura y de escritura.
El comando dir *:EXE, muestra todos los archivos ejecutables que se encuentran en el directorio
personal del usuario hharagons, en el servidor FTP.
Puede apreciar que bajo FTP el usuario hharagons, sobre los archivos .EXE, tiene los siguientes
permisos: rw-. Es decir de lectura (r, read) y escritura (w, write).
Si deseo extraer del servidor FTP una copia de un archivo, entonces se debe ejecutar el
comando get. En la figura 29.17., se puede apreciar el resultado de la ejecución del comando:
get EDITOR.EXE. Observe que se debe tener cuidado con el nombramiento de los archivos.
FTP es susceptible a las mayúsculas y minúsculas, mejor dicho Linux Fedora es sensible a las
“altas” y las “bajas”.
Si deseo escapar momentáneamente del servicio FTP y trabajar en la interfaz de comandos de
línea del MS Windows XP Professional, entonces digite el comando: !
La ejecución de este comando nos envía al prompt del XP, aprecie que el prompt es:
D:ΙDocuments & Settings\hharagons>
Aquí se ejecuta el comando interno del shell del XP: dir *.exe. Este comando se parece en su
ejecución al comando dir del FTP.
Para retornar al ambiente del FTP, ingrese en el prompt de XP: exit. Este comando le retornará
al ambiente del servidor FTP.
20
Capítulo 29: El Servidor FTP
En el caso de querer rescatar varios archivos del servidor FTP, que siguen un patrón común,
entonces utilizar el comando mget. Se pueden utilizar comodines para esto, veamos un ejemplo:
mget Fe*.zip. Y si desea que el sistema no le pida confirmación, entonces previamente ejecute
el comando prompt.
21
Sistema Operativo Linux
Puede apreciarse en la figura 29.18, que transferir un archivo de 34,340,372 bytes, esto es
aproximadamente 32.7 MB, toma tan sólo 3.11 segundos.
Para escapar de FTP digite el comando bye, que finaliza la sesión FTP y nos permite salir y regresar
a nuestro ambiente “normal” de trabajo.
22
Capítulo 29: El Servidor FTP
23
Sistema Operativo Linux
• REIN (Reinicializar):
Termina una sesión de USER, descargando todos los datos del entrada/salida y la información
de cuenta, excepto que si hay alguna transferencia en proceso permite que termine. Todos los
parámetros se inician con sus valores por defecto y la conexión de control se deja abierta.
El estado alcanzado es idéntico al que se tiene inmediatamente después de abrir la conexión
de control.
• QUIT (Salir):
Termina una sesión de USER y si no hay en proceso ninguna transferencia, cierra la conexión
de control. Si hay una transferencia de archivo en proceso, la conexión permanecerá abierta
hasta que el servidor envíe una respuesta con el resultado de la transferencia y luego se
cierra.
24
Capítulo 29: El Servidor FTP
25
Sistema Operativo Linux
servicio FTP en proceso y cierra la conexión de datos, devolviendo una respuesta 426 para
indicar que la solicitud de servicio terminó anormalmente. Luego, el servidor envía una
respuesta 226 para indicar que la orden de interrumpir se ha procesado correctamente.
• DELE (Borrar):
Borra en el servidor el archivo indicado en el nombre de ruta.
• RMD (Borrar directorio):
Borra en el servidor el directorio indicado.
• MKD:
Borra el directorio del servidor especificado.
• PWD:
Muestra el directorio de trabajo del servidor.
• LIST:
Envía una listado de los archivos a través del proceso de transferencia de datos pasivo. Si
el nombre de ruta u otra agrupación de archivos, el servidor debe transferir una lista de los
archivos en el directorio indicado. Si el nombre de ruta especifica un archivo, el servidor
debería enviar información sobre el archivo. Si no se indica argumento alguno, implica que
se quiere listar el directorio de trabajo actual o directorio por defecto.
• NLST (Listar nombres):
Envía listado de directorio desde el servidor. El nombre de ruta indica un directorio u otra
agrupación de archivos específica del sistema; si no hay argumento, se asume el directorio
actual.
• SITE (Parámetros del sistema):
Proporciona servicios específicos propios del sistema del servidor que son fundamentales
para transferir archivos pero no lo suficientemente universales como para ser incluidos como
órdenes en el protocolo.
• SYST:
Devuelve el tipo de sistema operativo del servidor.
• STAT:
El servidor devolverá información general del estado del proceso servidor FTP.
• HELP:
El servidor envía información sobre la implementación del FTP.
• NOOP (No operación):
No hace nada más que provocar que el servidor envíe una respuesta OK.
26
Capítulo 29: El Servidor FTP
27
Sistema Operativo Linux
?N? Descripción
#5# Sistema de archivos. Estas respuestas indican el estado del sistema de archivos
en el servidor según se realizan transferencias u otras acciones sobre el sistema
de archivos.
28
Capítulo 29: El Servidor FTP
Cód Descripción
Respuesta al marcador de reinicio. En este caso, el texto debe ser: MARK yyyy
110 = mmmm Donde yyyy es el marcador del flujo de datos en el proceso de usuario
y mmmm es el equivalente en el servidor.
120 El servicio estará en funcionamiento en nnn minutos.
125 La conexión de datos ya está abierta; comenzando transferencia.
150 Conexión abierta.
200 O. K (Orden correcta).
202 Orden no implementada, no necesaria en este sistema.
211 Estado del sistema o respuesta de ayuda del sistema.
212 Estado del directorio.
213 Estado del archivo.
Mensaje de ayuda. Sobre como usar el servidor o el significado de una orden
214
particular no estándar.
215 Identificación del tipo de sistema.
220 Servicio preparado para nuevo usuario.
221 Cerrando la conexión de control. Desconectado si procede.
225 Conexión de datos abierta; no hay transferencia en proceso.
Cerrando la conexión de datos. La acción sobre archivo requerida ha sido correcta
226
(por ejemplo, una transferencia o interrupción).
227 Iniciando modo pasivo.
230 Usuario conectado, continúe.
250 La acción sobre archivo solicitado finalizó correctamente.
257 “path” creado.
331 Usuario OK, necesita contraseña.
332 Necesita nombre de cuenta.
350 La acción requiere más información. Pendiente.
Servicio no disponible, cerrando la conexión de control. Esta puede ser la
421
respuesta a cualquier comando si el servidor sabe que debe finalizar.
29
Sistema Operativo Linux
30
Capítulo 29: El Servidor FTP
31
Sistema Operativo Linux
32