[equinux] Drupal: no hay derechos para escribir en /files

Marco Donoso ratadeagua en ratadeagua.com
Lun Mayo 29 11:08:53 EDT 2006


Hola, Samuel

Desde el Core 2 de Fedora, RedHat entrega un sistema de control granular de 
accesos llamado SE Linux (Security Enhanced Linux):

http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/selinux-guide/
http://www.nsa.gov/selinux/

El sistema de seguridad de SELinux implementa un grado adicional de protección 
sobre los permisos clásicos del UNIX, es decir, que todo lo que han hablado 
de permisos debe cumplirse, en particular para el caso del servidor web, el 
usuario o el grupo apache deben tener permiso de escritura en los directorios 
donde Drupal va a escbirir datos. Lo más adecuado (a mi criterio) es 
establecer:

Usuario apache, grupo apache y permisos 700
o
Usuario root, grupo apache y permisos 770

Adicionalmente, lo que hace SELinux es (entre otras cosas) impedir que las 
aplicaciones accedan a ciertos directorios a menos que lo hayas definido 
explícitamente, o sea, si el servidor web no tiene permisos de acceso a nivel 
de SELinux, no podrá mostrar o escribir la información contenida en un 
directorio.

Si por ejemplo, en el archivo /etc/httpd/conf/httpd.conf tienes la directiva:
DocumentRoot /www/sistemas
Debes definir clases de acceso SELinux para el usuario apache a ese 
directorio.

La configuración de SELinux no es muy complicada, pero para quien no tiene 
mucha experiencia con Linux, puede ser algo muy confuso, inicialmente. Te 
puedo dar dos recomendaciones:

1. Si la desesperación es grande, deshabilita (provisionalmente) la protección 
de SE Linux para el servidor web:
system-config-securitylevel
SELinux
Personalizar configuración SELinux
Deshabilitar protección SELinux para el servidor httpd
Reinicia el servidor linux

2. Si el servidor, a nivel de sistema operativo, va a ser administrado por una 
sola persona, coloca los archivos del servidor web en el 
directorio /var/www/html y define la directiva:
DocumentRoot /var/www/html
La configuración de SELinux que viene por defecto con RedHat permite acceso al 
usuario apache a ese directorio.

Y en todo caso, NUNCA hagas un chmod 777 a ningún archivo o directorio de un 
sistema Linux.

Marco
-- 
Marco Donoso
ratadeagua en ratadeagua.com - ratadeagua en gmail.com
Telf. 09 7665396 - 02 2231526
Quito, Ecuador

Am Donnerstag, 25. Mai 2006 18:16 schrieben Sie:
> Hola Marco,
>
> Si! Gracias :-)
>
> Marco Donoso escribió:
> > - Qué distribución de Linux usas?
>
> Centos 4.3
>
> > - Qué versión de apache usas?
>
> No se. Me imagino la que viene con Centos?
>
> > - Estás utilizando SE Linux?
>
> SE? Que es?
>
> > - Cuál es el directorio raíz de tu servidor web?
>
> ServerRoot "/etc/httpd"
>
> >     En el archivo de configuración de apache, mira la directiva
> > DocumentRoot
>
> DocumentRoot "/www/sistemas"
>
> > - Estás usando directorios virtuales?
>
> Si
>
> > - Cuál es el usuario y grupo que maneja el servidor web?
>
> apache
>
> >     En el archivo de configuración de apache, mira la directiva User y
> > Group
>
> User apache
> Group apache
>
>
> Ciao
> Samuel
>
> ---  andinasoft SA - Software y Consulting  ---
> Mariano Aguilera 216 y Almagro - Quito, Ecuador
> Tel. +593 2 223 5682 ----- Cel. +593 9 946 4046
> ---------  http://www.andinasoft.com  ---------



Más información sobre la lista de distribución equinux