<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://es.wiki.guifi.net/w/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
		<id>http://es.wiki.guifi.net/w/index.php?action=history&amp;feed=atom&amp;title=Servidor_FTP</id>
		<title>Servidor FTP - Historial de revisiones</title>
		<link rel="self" type="application/atom+xml" href="http://es.wiki.guifi.net/w/index.php?action=history&amp;feed=atom&amp;title=Servidor_FTP"/>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/w/index.php?title=Servidor_FTP&amp;action=history"/>
		<updated>2026-07-29T03:35:03Z</updated>
		<subtitle>Historial de revisiones para esta página en el wiki</subtitle>
		<generator>MediaWiki 1.22.0</generator>

	<entry>
		<id>http://es.wiki.guifi.net/w/index.php?title=Servidor_FTP&amp;diff=524&amp;oldid=prev</id>
		<title>90.163.44.186 en 15:21 13 nov 2011</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/w/index.php?title=Servidor_FTP&amp;diff=524&amp;oldid=prev"/>
				<updated>2011-11-13T15:21:29Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Revisión anterior&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revisión de 15:21 13 nov 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línea 148:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línea 148:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;El usuario anónimo no he conseguido que tenga derechos de escritura sobre incoming, pero como mínimo ya tenemos medio camino hecho ;)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;El usuario anónimo no he conseguido que tenga derechos de escritura sobre incoming, pero como mínimo ya tenemos medio camino hecho ;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[ca:Servidor_FTP]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>90.163.44.186</name></author>	</entry>

	<entry>
		<id>http://es.wiki.guifi.net/w/index.php?title=Servidor_FTP&amp;diff=521&amp;oldid=prev</id>
		<title>213.98.143.33: Página creada con 'Partimos de una debian squeeze 6.0.1.  Lo primero es instalar el servicio  &lt;pre&gt;# apt-get install vsftpd&lt;/pre&gt;  Y las herramientas para gestionar bases de datos Berkeley.  &lt;pre&gt;...'</title>
		<link rel="alternate" type="text/html" href="http://es.wiki.guifi.net/w/index.php?title=Servidor_FTP&amp;diff=521&amp;oldid=prev"/>
				<updated>2011-11-12T00:35:00Z</updated>
		
		<summary type="html">&lt;p&gt;Página creada con &amp;#039;Partimos de una debian squeeze 6.0.1.  Lo primero es instalar el servicio  &amp;lt;pre&amp;gt;# apt-get install vsftpd&amp;lt;/pre&amp;gt;  Y las herramientas para gestionar bases de datos Berkeley.  &amp;lt;pre&amp;gt;...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Partimos de una debian squeeze 6.0.1.&lt;br /&gt;
&lt;br /&gt;
Lo primero es instalar el servicio&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# apt-get install vsftpd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y las herramientas para gestionar bases de datos Berkeley.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# apt-get install db4.8-util&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A continuación creamos un fichero con los datos de login y passwords poniendo el usuario y debajo el password, de esta forma:&lt;br /&gt;
&amp;lt;!--more--&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# vi /root/ftpusers&lt;br /&gt;
usuario1&lt;br /&gt;
password1&lt;br /&gt;
usuario2&lt;br /&gt;
password2&lt;br /&gt;
:wq&lt;br /&gt;
# chmod 600 /root/ftpusers&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y generamos la base de datos en formato berkeley y la protegimos ante ojos indiscretos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# db4.8_load -T -t hash -f /root/ftpusers /etc/vsftpd_login.db&lt;br /&gt;
# chmod 600 /etc/vsftpd_login.db&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Una vez creada nuestra base de datos, necesitamos editar el archivo PAM para indicar que use nuestra base de datos.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# vi /etc/pam.d/vsftpd&lt;br /&gt;
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login&lt;br /&gt;
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;em&amp;gt;atención: comentamos el resto de líneas de este fichero&amp;lt;/em&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y al fichero de configuración vsftpd que use el fichero de autenticación pam al cual le hemos definido la autenticación con la base de datos Berkeley (esto ya está por defecto)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# This string is the name of the PAM service vsftpd will use.&lt;br /&gt;
pam_service_name=vsftpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La instalación por defecto de debian nos deja instalado el servicio con un acceso anónimo bajo el usuario ftp y el directorio de trabajo /usr/ftp, como en el sistema que estoy configurando la partición tocha es /var, voy a cambiar el directorio de trabajo del usuario ftp editando el fichero /etc/passwd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# vi /etc/passwd&lt;br /&gt;
ftp:x:104:106:ftp daemon,,,:/var/ftp:/bin/false&lt;br /&gt;
# mkdir /var/ftp&lt;br /&gt;
# chgrp -R ftp /var/ftp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora mismo podemos escoger si queremos permitir el usuario anónimo o no en este directorio, tal como he comentado al principio vamos a definir permisos restrictivos para los usuarios anónimos y más permisivos para los autenticados, si queremos en algún momento realizar la acción contraria es tan simple como cambiar la afirmación a negación o viceversa ;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# vi /etc/vsftpd.conf&lt;br /&gt;
listen=YES&lt;br /&gt;
anonymous_enable=YES # permitir login anónimo&lt;br /&gt;
local_enable=YES # permitir login usuarios del sistema (en este caso pam.d)&lt;br /&gt;
write_enable=NO&lt;br /&gt;
anon_upload_enable=NO&lt;br /&gt;
anon_mkdir_write_enable=NO&lt;br /&gt;
anon_other_write_enable=YES&lt;br /&gt;
dirmessage_enable=YES&lt;br /&gt;
use_localtime=YES&lt;br /&gt;
xferlog_enable=YES&lt;br /&gt;
connect_from_port_20=YES&lt;br /&gt;
chroot_local_user=YES # enjaulamos al usuario FTP, para que no pueda ir a directorios superiores&lt;br /&gt;
secure_chroot_dir=/var/run/vsftpd/empty&lt;br /&gt;
pam_service_name=vsftpd&lt;br /&gt;
rsa_cert_file=/etc/ssl/private/vsftpd.pem&lt;br /&gt;
user_config_dir=/etc/vsftpd/users&lt;br /&gt;
guest_enable=YES&lt;br /&gt;
guest_username=ftp&lt;br /&gt;
anon_root=/var/ftp/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A partir de aquí ya tenemos que el usuario anónimo sólo tiene lectura pero no escritura sobre el directorio de trabajo (/var/ftp), así que vamos a definir los usuarios. Para ello añadimos una línea más al fichero /etc/vsftpd.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user_config_dir=/etc/vsftpd/users&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
y creamos los directorios /etc/vsftpd/ y /etc/vsftpd/users/&lt;br /&gt;
&lt;br /&gt;
Ahora tendremos que decirle a vsftpd que no permita el login de los usuarios del sistema al FTP, ya que el password en el FTP es en claro y con un sniffer es sencillo conseguir el password de un usuario con acceso ssh al sistema, por esto se recomienda que los passwords de los usuarios del FTP sean distintos al de los del sistema.&lt;br /&gt;
&lt;br /&gt;
Una forma rápida de sacar los usuarios del sistema es así:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# cat /etc/passwd | cut -d &amp;quot;:&amp;quot; -f 1 &amp;gt; /etc/vsftpd/denied_users&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora solo nos queda definir usuario a usuario los permisos de cada uno. Para ello lo unico que tenemos que hacer es crear un archivo por usuario, con el nombre del mismo dentro de /etc/vsftpd/users/, especificando las opciones 'extras' que queremos que tenga cada uno de ellos.&lt;br /&gt;
Por ejemplo a usuario1, le vamos a permitir leer y descargar lo que hay en /var/ftp, para ello como indicamos antes, creamos el archivo /etc/vsftpd/users/usuario1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# cd /etc/vsftpd/users/&lt;br /&gt;
# vi usuario1&lt;br /&gt;
dirlist_enable=YES&lt;br /&gt;
download_enable=YES&lt;br /&gt;
local_root=/var/ftp&lt;br /&gt;
write_enable=NO&lt;br /&gt;
anon_world_readable_only=NO&lt;br /&gt;
:wq&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y al usuario2, le vamos a permitir escribir en /var/ftp, así que creamos otro archivo usuario2, que contenga:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# vi usuario2&lt;br /&gt;
dirlist_enable=YES&lt;br /&gt;
download_enable=YES&lt;br /&gt;
local_root=/var/ftp&lt;br /&gt;
anon_upload_enable=YES&lt;br /&gt;
anon_world_readable_only=NO&lt;br /&gt;
anon_other_write_enable=YES # permitir borrar ficheros propios y de otros usuarios&lt;br /&gt;
write_enable=YES&lt;br /&gt;
anon_mkdir_write_enable=YES # permitir escribir al directorio&lt;br /&gt;
local_umask=022 # mascara para los ficheros propios&lt;br /&gt;
anon_umask=022 # mascara para los ficheros desde otros usuarios&lt;br /&gt;
:wq&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tras hechas todas las modificaciones ya sólo nos falta reiniciar el servicio y probar que funciona ;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# /etc/init.d/vsftpd restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;em&amp;gt;Nota: He estado un rato, pero hasta que lo he encontrado... bufff!!! el directorio superior del FTP no puede tener los permisos del usuario FTP en escritura a other, ya que entra en conflicto con alguno de los parámetros de la configuración del servicio. Para que el FTP funcione tenemos que definir los permisos así:&amp;lt;/em&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@xava:/var# ls -l |grep ftp&lt;br /&gt;
drw-rwxr-x  5 blackhold blackhold  4096  7 set 04:36 ftp&lt;br /&gt;
&lt;br /&gt;
root@xava:/var# cd ftp&lt;br /&gt;
&lt;br /&gt;
root@xava:/var/ftp# ls -lh&lt;br /&gt;
total 12K&lt;br /&gt;
drwxrwxr-x 2 ftp ftp 4,0K  7 set 04:35 incoming&lt;br /&gt;
drwxrwxr-x 2 ftp ftp 4,0K  7 set 04:51 musica&lt;br /&gt;
drwxrwxr-x 2 ftp ftp 4,0K  7 set 04:36 videos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El usuario anónimo no he conseguido que tenga derechos de escritura sobre incoming, pero como mínimo ya tenemos medio camino hecho ;)&lt;/div&gt;</summary>
		<author><name>213.98.143.33</name></author>	</entry>

	</feed>