Cómo habilitar el módulo Userdir de Apache en RHEL/CentOS


User Directory o Userdir es un módulo de Apache, que permite recuperar directorios específicos del usuario a través de un servidor web Apache utilizando la sintaxis http://example.com/~user/ .

Por ejemplo, cuando el módulo mod_userdir está habilitado, las cuentas de los usuarios en el sistema podrán acceder al contenido de sus directorios personales con el mundo a través del servidor web Apache.

En este artículo, le mostraremos cómo habilitar las direcciones de usuario de Apache (mod_userdir) en los servidores RHEL, CentOS y Fedora utilizando el servidor web Apache.

Este tutorial asume que ya tiene el servidor web Apache instalado en su distribución de Linux. Si no lo ha hecho, puede instalarlo mediante el siguiente procedimiento ...

Paso 1: Instale el servidor HTTP Apache

Para instalar el servidor web Apache, use el siguiente comando en su distribución de Linux.

# yum install httpd           [On CentOS/RHEL]
# dnf install httpd           [On Fedora]

Paso 2: Habilite las direcciones de usuario de Apache

Ahora necesita configurar su servidor web Apache para usar este módulo en el archivo de configuración /etc/httpd/conf.d/userdir.conf , que ya está configurado con las mejores opciones.

# vi /etc/httpd/conf.d/userdir.conf

Luego, valide el contenido como se muestra a continuación.

# directory if a ~user request is received.
#
# The path to the end user account 'public_html' directory must be
# accessible to the webserver userid.  This usually means that ~userid
# must have permissions of 711, ~userid/public_html must have permissions
# of 755, and documents contained therein must be world-readable.
# Otherwise, the client will only receive a "403 Forbidden" message.
#
<IfModule mod_userdir.c>
    #
    # UserDir is disabled by default since it can confirm the presence
    # of a username on the system (depending on home directory
    # permissions).
    #
    UserDir enabled tecmint

    #
    # To enable requests to /~user/ to serve the user's public_html
    # directory, remove the "UserDir disabled" line above, and uncomment
    # the following line instead:
    #
    UserDir public_html
</IfModule>

#
# Control access to UserDir directories.  The following is an example
# for a site where these directories are restricted to read-only.
#
<Directory "/home/*/public_html">
    ## Apache 2.4 users use following ##
    AllowOverride FileInfo AuthConfig Limit Indexes
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    Require method GET POST OPTIONS

## Apache 2.2 users use following ##
        Options Indexes Includes FollowSymLinks        
        AllowOverride All
        Allow from all
        Order deny,allow
</Directory>

Para permitir que algunos usuarios tengan acceso a directorios UserDir , pero no a nadie más, use la siguiente configuración en el archivo de configuración.

UserDir disabled
UserDir enabled testuser1 testuser2 testuser3

Para permitir que todos los usuarios tengan acceso a los directorios UserDir , pero deshabilítelo para algunos usuarios, use la siguiente configuración en el archivo de configuración.

UserDir enabled
UserDir disabled testuser4 testuser5 testuser6

Una vez que haya realizado los ajustes de configuración según sus requisitos, debe reiniciar el servidor web Apache para aplicar los cambios recientes.

# systemctl restart httpd.service  [On SystemD]
# service httpd restart            [On SysVInit]

Paso 3: creación de directorios de usuarios

Ahora necesita crear un directorio/directorios public_html en los directorios de inicio de usuario/usuarios. Por ejemplo, aquí estoy creando un directorio public_html en el directorio de inicio del usuario de tecmint.

# mkdir /home/tecmint/public_html

A continuación, aplique los permisos correctos en los directorios de inicio del usuario y public_html.

# chmod 711 /home/tecmint
# chown tecmint:tecmint /home/tecmint/public_html
# chmod 755 /home/tecmint/public_html

Además, configure el contexto SELinux correcto para Apache homedirs (httpd_enable_homedirs).

# setsebool -P httpd_enable_homedirs true
# chcon -R -t httpd_sys_content_t /home/tecmint/public_html

Paso 4: Pruebe el directorio de usuario de Apache habilitado

Finalmente, verifique el Userdir apuntando su navegador al nombre de host del servidor o la dirección IP seguido del nombre de usuario.

http://example.com/~tecmint
OR
http://192.168.0.105/~tecmint

Si lo desea, también puede probar páginas HTML e información PHP creando los siguientes archivos.

Cree un archivo /home/tecmint/public_html/test.html con el siguiente contenido.

<html>
  <head>
    <title>TecMint is Best Site for Linux</title>
  </head>
  <body>
    <h1>TecMint is Best Site for Linux</h1>
  </body>
</html>

Cree el archivo /home/tecmint/public_html/test.php con el siguiente contenido.

<?php
  phpinfo();
?>

¡Eso es todo! En este artículo, hemos explicado cómo habilitar el módulo Userdir para permitir que los usuarios compartan contenido de sus directorios de inicio. Si tiene preguntas sobre este artículo, no dude en preguntar en la sección de comentarios a continuación.