Habilitar Directorios De Usuario En Apache2 (UserDir)

Publicado: 3 julio 2007 en Aplicaciones, Escritorio Linux, Informática, Linux Tips

El servidor web Apache, uno de los mas usados, nos permite tener directorios individuales para los usuarios del sistema en los que pueden tener su página web o sus archivos y acceder a ellos desde un navegador de internet sin necesidad de estarlos metiendo en el directorio raiz del servidor.

Esto significa que cada usuario del sistema dentro de su directorio home puede crear una carpeta llamada public_html y crear sus páginas web guardando sus archivos en la carpeta mencionada, y en un momento veremos como habilitar esta funcionalidad de apache.

Esta instalación ha sido probada en la distribución Ubuntu Feisty y usando el LAMP server que ésta distribución permite instalar.

INSTALACIÓN DE EL SERVIDOR LAMP

Bueno, primero lo primero, si no tenemos un servidor LAMP instalado en nuestro sistema pues esto no va a servir mas que para maldita sea o de documentación para cuando te animes a hacerlo, o por lo menos con tener el Apache instalado con eso bastará.

¿Qué es LAMP?, bueno LAMP es una denominación asignada a los equipos que ejecutan la combinación de Linux, Apache, MySql y PHP, como podrán notar son las iniciales de cada herramienta de software que intervienen para poder tener un servidor web casí completo o que brinda algunos de los servicios más comunes. Quieres saber más?

¿Cómo lo instalamos en ubuntu feisty?, bueno, esa es quizas la parte más fácil, lo que tenemos que hacer es  abrir el gestor de paquetes Synaptic (Sistema->Administración->Gestor De Paquetes Synaptic) y en el menú Editar elegimos la opción “marcar paquetes por tarea” y nos aparecerá una nueva ventana con una lista, debemos buscar y marcar la casilla de la opción marcada como “LAMP Server”, posteriormente le damos aceptar y dejamos que el sistema instale todo sólo.

Dialogo de marcar paquetes por tarea

 

HABILITAR LAS CARPETAS PARA LOS USUARIOS

Después de haber instalado nuestro servidor LAMP ya estamos listos para habilitar las carpetas que le permitan a los usuarios del sistema tener sus propias páginas web en sus directorios home.

Para comprobar que nuestro servidor ya esta instalado y ejecutandose abrimos nuestro navegador web y en la barra de direcciones ponemos lo siguiente: http://localhost y presionamos enter, nos debe mostrar un index of, si nos lo muesta ya esta listo, no debe haber broncas en esta etapa.

Bueno creo que aquí viene algo un poco mas complejo pero esperemos que sea entendible para todos, anteriormente habilitar esta funcionalidad consistía casí de agregar la linea UserDir public_html en el archivo de configuración de apache,  digo casí porque no me consta del todo que fuese asi de simple, ahora esa parte del UserDir la convirtieron en un modulo más, por lo que se hace necesario cargar ese modulo al momento de que el servidor apache inicia y con eso tendremos disponibles los directorios de usuario.

¿Cómo lo hacemos?… bueno aquí vamos, lo primero que tenemos que hacer es abrir una consola (Aplicaciones->Accesorios->Terminal), una vez abierta nos vamos a la carpeta donde están los archivos de configuración de apache, esto con el siguiente comando:

cd /etc/apache2/

Una vez ahí hacemos un ls (ls es para listar los directorios de la carpeta donde nos encontramos, podemos no hacer el ls pero para fines de este post lo hare), el ls nos mostrará algo como lo siguiente:

huevas@SuperLinux:/etc/apache2$ ls
apache2.conf   conf.d   httpd.conf      mods-enabled  sites-available
apache2.conf~  envvars  mods-available  ports.conf    sites-enabled
huevas@SuperLinux:/etc/apache2$

apache2.conf es el archivo de configuración de apache, conf.d es un directorio con configuraciones tambien, httpd.conf según ellos lo manejan para que el usuario en este caso el administrador del sistema agregue sus configuraciones, mods-enabled y mods-available contienen los modulos disponibles y los que se cargan (Estas dos carpetas son con las que vamos a trabajar), sites-available y sites-enabled cumplen una función similar a las carpetas de los mods o modulos, envvars son variables de entorno y ports.conf es de puertos, en este caso si ejecutan el comando “more ports.conf” nos mostrará Listen 80, esto quiere decir que esta usando el puerto 80 que es el de web.

Muy bien, ya vimos las carpetas y vimos que las que nos interesan se llaman mods-available y mods-enabled, ¿Por qué? pues porque como ya se menciono la parte de UserDir ya se hizo como un modulo más de apache, mods-available contiene todos los modulos que se instalarón al momento de instalar Apache, y mods-enabled contiene todos los modulos que se activan al momento en que apache inicia, no todos los modulos se cargan al arranque, sólo los que especificamos nosotros.

Ahora tenemos que entrar a la carpeta mods-available con cd mods-available (siempre y cuando estemos ubicados en /etc/apache2, si no es así tenemos que escribir la ruta completa, es decir, /etc/apache2/mods-available) y una vez dentro de la carpeta ejecutamos el siguiente comando: ls userdir* nos debe mostrar dos archivos el userdir.conf y el userdir.mod estos archivos del modulo estan disponibles pero no activados, para activarlos debemos meternos dentro del directorio mods-enabled y crear enlaces simbolicos hacia estos dos archivos.

Bueno, nos metemos al directorio mods-enabled con el siguiente comando “cd ../mods-enabled” o en su defecto “cd /etc/apache2/mods-enabled”, una vez ahi vamos a ejecutar el siguiente comando:

sudo ln -s /etc/apache2/mods-available/userdir* .

¿Qué significa el comando anterior?… el comando anterior lo que nos dice es: crea un enlace simbolico (ln  -s) de los archivos que se encuentran en mods-available y cuyo nombre empieze con userdir y termine con cualquier otra cosa (/etc/apache2/mods-available/userdir*) y finalmente crea esos enlaces en la carpeta en la que me encuentro actualmente (eso significa el “.”, nuestra ubicación actual que se supone es mods-enabled) y bueno el sudo es para hacerlo con permisos de superusuario, si no ponemos sudo simplemente los enlaces no se crearán.

Ahora si ejecutamos un ls userdir* dentro del directorio mods-enabled nos deben aparecer los dos archivos de los que creamos el enlace simbolico, el userdir.conf y el userdir.mod, si se dan cuenta aparece en otro colorsito, eso indica que son enlaces simbolicos, y si ejecutan un ls -la userdir* nos mostrara la dirección del archivo al que esta apuntando ese enlace simbolico, algo como lo siguiente:

huevas@SuperLinux:/etc/apache2/mods-enabled$ ls -la userdir*
lrwxrwxrwx 1 root root 30 2007-07-03 10:41 userdir.conf -> ../mods-available/userdir.conf
lrwxrwxrwx 1 root root 30 2007-07-03 10:41 userdir.load -> ../mods-available/userdir.load
huevas@SuperLinux:/etc/apache2/mods-enabled$

Bueno, ya casí estamos listos, lo que nos falta es reiniciar nuestro servidor apache, eso lo hacemos ejecutando el siguiente comando:

sudo /etc/init.d/apache2 restart

Si todo  sale bien, nos debe aparecer mensajtos de lo que esta haciendo y al final un [ok], eso indica que todo fue bien, si nos sale un [fail] o algo asi de error pues entonces ya valio madres jajajaja, no, bueno no y si, pero ahi nos dice porque no se pudo arrancar y con base en ese mensaje de error podemos realizar acciones para intentar solucionarlo.

Nosotros en este post optaremos porque todo salio perfecto, para comprobar que todo fue bien, vamos a nuestra carpeta home, ya pueden cerrar sus consolas si quieren, a partir de aquí usamos el entorno gráfico, ahora que si les encanta la consola pues adelante, sigan con ella, pues si, les decía, vamos a nuestro home o carpeta de usuario y creamos una carpeta llamada public_html, es ahí donde guardamos nuestros archivos web, vamos a crear una página sencilla sólo para probar, un html simple que muestre un mensaje, algo así como “hola mundo de mier… bueno, mejor cruel jaja” y lo guardamos con el nombre de index.html en esa carpeta.

Lo siguiente es abrir nuestro navegador de internet y en la barra de direcciones poner lo siguiente: http://localhost/~usuario/ y al darle enter nos debe mostrar el contenido o el mensaje que pusimos en nuestra pagina html, que en este caso sería:   “hola mundo de mier… bueno, mejor cruel jaja”, aparecerá si lo guardamos con el nombre index.html, si no lo guardamos así, debemos especificar el nombre del archivo despues de ~usuario/nombreArchivo.html.

Y para finalizar, el simbolo ~ indica la carpeta home, y se le agrega el nombre del usuario que quiere ver sus datos, en mi caso es: http://localhost/~huevas/ porque mi usuario linux es huevas, para sacarlo buscalo en tu teclado y lo sacas con la combinación de la tecla AltGr + la tecla que tiene el simbolo.

Y bueno, esperemos que todo les haya salido bien y que les haya sido de utilidad. Saludos!

Anuncios
comentarios
  1. Manuel Meza dice:

    vaya! que buen tutorial te has aventado, se ve que le sabes… ojalá a muchos le sirva, y creo que a mi pronto…
    Saludos!

  2. K4br3r4 dice:

    Yaaaaaaaaa apoco si muy cabrón?

  3. huevas dice:

    jajajajajaja, nel, me pase un chingo de rato buscandole como wey hasta que le encontre, y pues como al final no estaba muy díficil pues lo puse por si alguien quería hacer lo mismo pues no le tomara el tiempo que me tomo a mi descubrir la solución jeje.

    Pero gracias por los comentarios. Saludos!

  4. El tio tepo dice:

    Hay, hay, ayyyyyyyyyyyyyyyy wey apoco tu escribiste todo eso, no mame cuevas. Ami me hule como copy and paste. Hahahahaha ha y Happy birthday wey y no me importa q haya sido en Abril cabron.

  5. huevas dice:

    jajaja, nou, no es copy and paste, si lo escribí, y chido, gracias!

  6. ari dice:

    hola, gracias esta muy explicativo… saludos

  7. Luis dice:

    muy bueno justo en el clavo!!!!

  8. David dice:

    Hey muy buen tutorial, no podia configurar el userdir, pero ahora gracias a tu howto lo pude hacer.

    Saludos cordiales.

  9. chusmilio dice:

    Hola men, muchas gracias por tu explicacion, solo una cosa, no se porque cuando hice
    sudo ln -s /etc/apache2/mods-available/userdir* no me funciono me toco hacer enlace a cada uno por aparte y listo el pollo…
    salu2

  10. huevas dice:

    mmmm… si esta raro, pero pues que bueno que jalo al final.
    Saludos!

  11. Faryshta dice:

    eres mi heroe cabron, para los autodidactas prepotentes como yo el que exista personas que hacen paginas tan buenas y tutoriales tan chidos y entretenidos es lo mejor que nos puede pasar.

    creo que todos te lo agradecemos

  12. Alvaro dice:

    Esta muy bueno y sencillo, no es facil encontrar algo asi como esto gracias.

    Por cierto para “chusmilio” para que salga bien solo te falto el punto “.” y la orden quedaria asi: “sudo ln -s /etc/apache2/mods-available/userdir* .”
    sin las comillas

  13. huevas dice:

    mmmm… si esta el punto:

    “Bueno, nos metemos al directorio mods-enabled con el siguiente comando “cd ../mods-enabled” o en su defecto “cd /etc/apache2/mods-enabled”, una vez ahi vamos a ejecutar el siguiente comando:

    sudo ln -s /etc/apache2/mods-available/userdir* .

    ¿Qué significa el comando anterior?… el comando anterior lo que nos dice es: crea un enlace simbolico (ln -s) de los archivos que se encuentran en mods-available y cuyo nombre empieze con userdir y termine con cualquier otra cosa (/etc/apache2/mods-available/userdir*) y finalmente crea esos enlaces en la carpeta en la que me encuentro actualmente (eso significa el “.”, nuestra ubicación actual que se supone es mods-enabled) y bueno el sudo es para hacerlo con permisos de superusuario, si no ponemos sudo simplemente los enlaces no se crearán.”

    Saludos y gracias, que bueno que sea de utilidas!

  14. Apokalyptica79 dice:

    Hola y muchas gracias, me fue muy útil.

  15. gustavo dice:

    Muy bien si tenes sitios virtuales?? como se hace?

    Muchas Gracias.

  16. john dice:

    mas ke excelente, funciona de una
    gracias

  17. anonimo dice:

    Bueno, para los iniciados en apache la explicacion me parece buena, pero algo liada.
    ¿no es mas facil utilizar el comando
    a2enmod userdir en lugar de hacer los enlaces a mano?

  18. huevas dice:

    Jajajajaja, wow, no pues no tenía idea, por eso no lo puse así, pero gracias por decirnos y si definitivamente es más fácil como lo mencionas.

    Gracias, Saludos!

  19. smack dice:

    Muy bueno loco, en un momento todo bien!

  20. Mary dice:

    Hola

    Mi apache no tiene las carpetas que indicas, sino estas:
    bin cgi-bin error icons lib man modules
    build conf htdocs include logs manual

    Algún comentario?
    Quiero hacer lo que explicas pero mi apache es diferente, no sé qué hacer.

  21. Mary dice:

    Hola. Resolví googleando más. Tiene que ver con la distribución de linux que utilizo. Yo tengo que usar Fedora 4. En esta página está la solución: http://docs.fedoraproject.org/selinux-apache-fc3/sn-user-homedir.html

    Sin embargo, lo que realmente quiero es que apache pueda transformarse en un usuario para ejecutar ciertas cosas que sólo puede hacerlo dicho usuario.

    Si alguien puede darme ideas lo agradezco. Gracias al creador del blog, aunque no me sirviera directamente me ayudó enormemente en econtrar la solución de mi caso.

  22. Ekvis dice:

    hola quisiera que me ayudaran como hacer un servidor de red local con centos como lo hago para poder administrar mi red.

  23. janoterrano dice:

    Está muy bueno el tutorial, pero es mucho mas fácil (almenos en Ubunu 8.0.4) escribir en consola como root:

    a2enmod

    y te pregunta que modulo quieres activar de una lista que te entrega, le pones userdir, reinicias apache y listo.

    Saludos.

  24. alex dice:

    Es verdad que al utilizar el comando “a2enmod userdir” es mas facil, lo hice manual despues que vi uno de los comentarios jaja pero aprendí un poco mas de Linux con esto (novato) e incluso cambie algunas lineas del archivo como tomar una sola carpeta en vez de todo el home y cambiar el nombre de la carpeta por defecto a www. GRACIAS

  25. Jaime dice:

    Hola. Tengo instalado ubuntu server 8.10 y en la carpeta mods-available me aparecen los archivos userdir.conf y userdir.load. No aparece el userdir.mod?
    Paso por alto esto, reinicio el apache, aparece Ok pero al ejecutar
    http://192.168.1.100/~jaimeandres/prueba.html
    me aparece el siguiente error:
    The requested URL /~jaimeandres/prueba.html was not found on this server.
    Apache/2.2.9 (Ubuntu) PHP/5.2.6-2ubuntu4.2 with Suhosin-Patch Server at 192.168.1.100 Port 80

    Gracias por su ayuda.

  26. José A Pupo Acosta dice:

    Hola, lo mismo me pasa a mi, yo tengo Ubuntu 10.10 y no me funciona eso, que me suguieren que haga?

  27. Tengo un problema.. realizo todos los pasos y bien el servidor funciona probando el sistema con phpinfo(); ubicando el archivo en /var/www todo va bien.. inclusive llego a localhost/~usuario , bien pero al ejecutar el mismo archivo me indica que lo va a descargar como archivo info.phtml.. y evidentemente no puedo ejecutar en ninguna carpeta los sitios en forma local..

    COMO SE PUEDE CORREGIR.. editando algun archivo.. ?? de ya gracias.

    Fernando Rodrgiuez

  28. capecorp dice:

    Buen post.

    He llegado hasta aquí porque los de seguridad informática me han puesto una vulnerabilidad por este motivo.

    Al parecer no es seguro que se muestre otra cosa que no sea la página de error por defecto, exista o no el usuario. Dicen que, un atacante podría listar que usuarios existen y cuales no. Y efectivamente es así. No es una vulnerabilidad, a mi parecer, muy crítica, pero ciertamente no es lo más seguro.

    Saludos!!

  29. mauricio dice:

    no me funciona

  30. Brian dice:

    como hago para que no se muestre el nombre de mi user, o mas especificamente necesito crear varios usuarios, para que en vez de que sean diferentes paginas web desde localhost/usuario1, localhost/usuario2. Gracias de antemano!

  31. Carolina dice:

    Muchas Gracias por esta información ! Me sirvió de mucho, la explicación estuvo completa, estoy iniciando con linux y me resulto de gran ayuda. Saludos!

  32. […] Habilitar directorios de Usuario en Apache2 (UserDir) […]

  33. Jorge dice:

    Hola he seguido tu tutorial y todo Bien, pero si cree un archivo .php y no lo lee por que? si en lampp viene con el php ya instalado y en el /var/ww/html si acepta php?

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s