Instalación y configuración de suPHP

Hola hoy voy a hacer este tutorial de como instalar y configurar el módulo suPHP para Apache o httpd.
La instalación la realicé en Fedora 16 con httpd.
Tal vez ya muchos saben como instalarlo pero de todas formas lo escribiré ya que yo nunca antes lo había hecho y si me tomo tiempo para algo tan sencillo que es el lograr que funcionara.

Lo que el módulo suPHP hace en si es definir que usuario y grupo ejecutará los scripts de PHP. Esto se define dentro de uno o varios VirtualHost. Esto quiere decir que podemos tener distintos usuarios para cada uno de nuestros sitios. Incluso pueden ejecutarse bajo root aunque no es recomendable.

Ahora como se instala:

Se puede con yum o en caso de distros basadas en Debian con apt-get, pero al menos en el caso de Fedora y otras distros similares recomiendo que se descargue desde la página oficial (lo digo por experiencia -.-). Aquí está el link: http://www.suphp.org/Download.html

Entonces ya descargado descomprimimos el paquete con:


Entramos a la carpeta que se generó tras descomprimir el paquete y configuramos la intalación antes de compilar:



Que son los parámetros establecidos:

--with-apxs=/usr/sbin/apxs: Establecemos donde se encuentra apxs (esta es mi ubicación pero puede variar según las distros, así que primero verifiquen en donde se encuentra su apxs). Apxs es una utilidad de Apache que ayuda en la construcción de módulos.

--with-apr=/usr/bin/apr-1-config: Igual que la anterior establecemos donde se encuentra en este caso apr-1-config. Apr es la utilidad de configuración Apache Portable Runtime.

--with-apache-user=apache: Se establece con que usuario está corriendo Apache o httpd. (Yo escribí Apache porque así está corriendo mi httpd pero revisen cual es el suyo).

--with-logfile=/var/log/httpd/suphp: Aquí establecemos en donde se van a estar almacenando los logs que genere suPHP. Puede ser una ubicación distinta siempre y cuando el usuario bajo el cual corre Apache o httpd tenga permisos de escritura sobre ese directorio.

--with-setid-mode=paranoid: Se establece bajo que modo se ejecutará suPHP. Más abajo viene la descripción de los distintos modos.

--sysconfdir=/etc: El directorio en donde se buscarán los archivos de configuración de suPHP. Al menos debe ser legible para el usuario de Apache o httpd.

--enable-SUPHP_USE_USERGROUP=yes: Habilitar el uso de suPHP_UserGroup dentro de la configuración de Apache o httpd. suPHP_UserGroup es para establecer el usuario y grupo bajo el cual se ejecutará Apache/httpd o cierto/ciertos VirtualHost.

Modos para ejecutar suPHP:

Owner(dueño): Los scripts se ejecutarán con el usuario y grupo del dueño del archivo.

Force(forzado): Los scripts serán ejecutados con el usuario y grupo establecidos en la configuración de Apache/httpd bajo suPHP_UserGroup sin importar que el dueño del script sea otro usuario o grupo. (suPHP no recomienda utilizar este modo ya que es el más inseguro).

Paranoid(Paranoico): Los scripts serán ejecutados con el usuario y grupo establecidos en la configuración de Apache/httpd bajo suPHP_UserGroup pero sólo si ese usuario y grupo coinciden con el usuario y grupo del dueño del script.

Ahora continuemos con la instalación, ya que se configuró pasemos a compilar:


Si no apareció ningún error podemos pasar a la instalación:




Configuración de suPHP en Apache/httpd:

Editamos o sino existe creamos el archivo suphp.conf dentro de /etc (o el directorio que establecieron que almacenaría los archivos de configuración). El archivo debe contener lo siguiente:



El siguiente paso en configuración:

Para httpd en Fedora o similares:

Editar el archivo /etc/httpd/conf.d/suphp.conf con lo siguiente:



Y el archivo de configuración de httpd en la sección de los VirtualHost debe quedar parecido a esto (suponiendo que queremos correrlo con el usuario rukia):




Para Apache en Ubuntu o similares:

Agregar el texto anterior dentro de los VirtualHost que utilizaran suPHP.

Por lo tanto la configuración para un VirtualHost de Apache en Ubuntu utilizando para ejecutar scripts al usuario rukia sería:




Y con esto finaliza la instalación y configuración de suPHP ahora sólo queda reiniciar el servidor Apache/httpd.

Se puede probar por ejemplo con un script que mande a crear un archivo dentro del mismo directorio:

Código PHP:



Cualquier duda comenten porfavor, saludos!

Comentarios

Entradas populares de este blog

Como calcular permisos de umask

Configuración de un DNS IPv6 local en Linux con Bind

Permisos Unix: Los bits SUID, SGID y sticky