martes, 24 de febrero de 2009

servidor web con acceso ftp, ubuntu

La idea es crear un servidor de paginas web para diferentes usuarios y que cada uno pueda modificar el archivo de su pagina a traves de un enlace ftp. el orden que tiene es con un usuario Administrador llamado en el ejemplo Master y los demas usuarios comunes. el ftp esta enjaulado para que los usuarios normales tengan acceso solo a sus respectivos directorios.


Para comenzar en necesarios instalar el programa VSFTPD.






Una vez descargado entrara en funcionamiento.






Ahora, de la misma forma, descargar apache2






Una vez descargado si esta todo bien se iniciará.



Ahora hay que crear un grupo para los ususarios virtuales que ocuparan el servicio.
El grupo se llamara ftp






Ahora crearemos un directorio para un usuario normal y el usuario privilegiado usará la carpeta raiz del servicio, es decir /home/ftp.






Una vez creado el directorio confirmamos que exista con el comando ls.

Ahora crearemos a los usuarios y se les asignaran contraseñas.






Crear shell fantasma con sudo mkdir /bin/ftp y editamos el archivo /etc/shells y agregamos el nuevo shell fantasma.






Ahora edtamos el archivo /etc/passwd y a los usuarios recien creados le damos el shell fantasma, quedando de la siguiente manera:






Ahora reiniciamos el servicio. Es recomendable hacer esto cada vez que se altera algun archivo o directorio de nuestro ftp.






Ahora hay que configurar el archivo /etc/vsftpd.conf para dejar funcionando nuestro servicio ftp.


Los parametros mas importantes debieran quedar mas menos asi:




Editamos el archivo /etc/vsftpd.chroot_list y agregamos al usuario master para que se mueva dentro de los directorios del ftp.



Ahora, para ir finalizando con la configuracion de ftp, es necesario hacer algunos cambios a los permisos de los directorios que ocuparemos. 


En la imagen se muestra que la carpeta ftp pertenece al grupo root y no tiene permisos de escritura para su grupo. 
Lo que haremos es cambiar el grupo por el grupo que estamos utilizando para los usuarios, es decir el grupo ftp. Tambien daremos permisos de escritura al grupo.






Se puede ver que ahora la carpeta ftp pertenece al grupo ftp y tiene permisos de lectura-escritura-ejecucion para su grupo.



El mismo procedimiento se debe hacer con las carpetas de cada usuario, es decir asignarselas al grupo ftp y darle permisos de escritura al grupo.
Tambien se debe asignar al grupo ftp los archivos index.html






Ahora veremos la parte del servicio web, para comenzar hay que editar el archivo /etc/hosts y darle el siguiente parametro: 127.0.0.1 servidor






Ahora crearemos paginas web para los usuarios. 
Con el comando:

$ sudo nano /home/ftp/index.html 


Crearemos el archivo web que corresponde en este caso al usuario privilegiado master. Como el archivo no existe aparecerá en blanco por lo que tendremo que crear en lenguaje html basico la pagina, quedando algo como esto:






Asi habremos creado la pagina de master


Para los demas usuarios es el mismo procedimiento, solo que en sus respectivas carpetas y con mensajes alusivos a cada usuario.



Ahora editaremos el archivo:


#nano /etc/apache2/sites-available/default


En las dos primeras lineas se debe indicar el puerto 80 al lado de cada asterisco, quedando algo como “ *:80 ”.



Luego copiamos el archivo a otro con nombre servidor.



$cp default servidor



Ahora editamos el archivo servidor y hacemos las siguientes modicicaciones:


ServerAdmin webmaster@servidor
DocumentRoot /home/ftp
Directory /home/ftp



Quedando algo como:






El resto queda tal-cual.



NOTA: Este cambio de path tambien es necesario hacerlo en el archivo default visto anteriormente.



Ahora vamos al directorio:
# cd /etc/apache2 

Y activamos el servicio recien configurado con el comando:

# a2ensite servidor 


Y luego reiniciamos el servicio web con el comando:
# /etc/init.d/apache2 force-reload 


El procedimiento es algo similar a esto:






Ahora comprabamos el funcionamiento de nuestro servidor en un sistema con windows XP en un entorno local simulado con VMWARE


Un ejemplo del resultado del servicio ftp seria algo similar a esto:








NOTA: el servidor está configurado con la ip 192.168.1.50


Ahora la visualizacion de una pagina web tendria que ser algo como esto:






Y para los usuarios...









DATOS:
Sistemas utilizados:
Ubuntu server 7,10 (como servidor)
Windows xp (como cliente)

Software configurado:
VSFTPD (FTP)
Apache2 (web).


Bueno es decir que el ejemplo es perfectamente aplicable en debian, puede que con algunas diferencias, pero minimas.


Saludos.