Permiso y propietario de los archivos.

Permiso y propietario de los archivos.

de Luis Saavedra -
Número de respuestas: 10
Hola a todos,

quizá estoy preguntando lo obvio pero me interesa saber, sobre todo por seguridad, si estoy en lo correcto, las carpetas y archivos dentro de moodle y moodledata deben ser propiedad del servidor web (en debian esto se traduce a www-data:www-data), los permisos para estas carpetas y sus subcarpetas deben ser 755, mientras que los permisos para los archivos contenidos en estas carpetas deben ser 644.

Por favor, si alguien me entiende, ¿estoy en lo correcto, cierto?, no he tenido hasta ahora problemas, pero no me gustaría que sucediera alguno y luego sea culpa de los permisos y propietarios de los archivos.

Hago la pregunta debido a que cuando uno se baja moodle quedan archivos con permiso de ejecución, eso creo que es un problema, ojalá y alguien me responda,

Saludos.
Promedio de valoraciones: -
En respuesta a Luis Saavedra

Re: Permiso y propietario de los archivos.

de José Rama -
Los archivos de datos es mejor dejarlos fuera del directorio web, para aclararlo mejor mira la documentacion de instalacion en :
http://docs.moodle.org/es/Instalaci%C3%B3n_de_moodle
busca en "Crear Directorio de Datos"
En respuesta a José Rama

Re: Permiso y propietario de los archivos.

de Luis Saavedra -
Muchas gracias José por responder, como tú dices, los archivos de datos hay que dejarlos fuera del acceso vía web, eso está OK, no hay problema lo entiendo bien, lo que me cuesta entender es el porqué cuando uno descarga moodle y lo descomprime trae archivos con permisos de ejecución (por ejemplo), y lo que hablan sobre esto en el link de instalación no es muy profundo, sólo hablan de los permisos y propietarios de la carpeta moodledata, si la carpeta moodle tiene archivos con permiso de ejecución ¿cuál es el propietario de esos archivos? ¿root o www-data?, eso es parte de lo que me refiero, por ejemplo, si se deja como propietario de esos archivos a www-data, entonces desde afuera podrían ejecutar esos archivos en el servidor, como también tienen permiso de escritura www-data, entonces alguien puede modificarlos y luego ejecutar lo que quisiera, ese es un problema ya que www-data también sería propietario de otros archivos, entonces podría borrarlos, o cambiar sus notas, leer por ejemplo otros archivos pertenecientes a www-data (ejecutando la lectura), los que están en moodledata por ejemplo, y entonces no sirve de mucho colocarlos fuera del directorio web, si me entiendes bien, comprenderás mi preocupación por este asunto, ya que por otra parte si la carpeta moodle y los archivos que contiene no son de propiedad de www-data entonces podría no funcionar algo, lo que no quiero, en eso estoy por el momento, ojalá no te haya aburrido leer esto,

Saludos y muchas gracias!!!
En respuesta a Luis Saavedra

Re: Permiso y propietario de los archivos.

de José Rama -
Entiendo tu preocupacion, lo importante es :
1.- Que los archivos del data pertenescan al usuario del apache ( www-data), y que solo tengan permisos de lectura y escritura.Moodle se encarga de leerlos y modificarlos ( nunca de ejecutarlos)
2.- Que los archivos del moodle ( los .php) solo tengan permisos de ejecucion (sino no los podes ejecutarsonrisa) y de lectura, para el propietario que es www-data, de esa manera la unica forma de que alguien ejecute algo es que tenga permisos de subirlo al servidor, pero como eso no se puede hacer via apache, estas seguro, por ese motivo es que tenes el directorio de datos fuera de la estructura accesible de la web, pq sino alguien podria subir un archivo PHP y ejecutarlo.

En respuesta a José Rama

Re: Permiso y propietario de los archivos.

de Luis Saavedra -
Gracias José por tu respuesta, ahora me quedan más claras algunas cosas.

Mi configuración de propietarios es la siguiente:

# chown -R root:root moodle
# chown -R www-data:www-data ../moodledata

es decir que la carpeta moodle es de root y la carpeta moodledata es de www-data.

La configuración de permisos de las carpetas es la siguiente:

# find moodle/ -type d | sed s/^/\"/g | sed s/$/\"/g| xargs -l chmod 755
# find ../moodledata/ -type d | sed s/^/\"/g | sed s/$/\"/g| xargs -l chmod 755

es decir que las carpetas tienen permisos 755 (lectura, escritura y ejecución para el propietario y sólo lectura y ejecución para los demás).

Mientras que la configuración de permisos de los archivos es la siguiente:

# find moodle/ -type f | sed s/^/\"/g | sed s/$/\"/g| xargs -l chmod 644
# find ../moodledata/ -type f | sed s/^/\"/g | sed s/$/\"/g| xargs -l chmod 644

es decir que los archivos tienen permisos 644 (lectura y escritura para el propietario y sólo lectura para los demás). A ningún archivo le he dado permiso de ejecución.

Ahora viene la pregunta ¿he tenido problemas? la respuesta es "no", esas comillas vienen de los siguiente, y ahora parece que nos vamos a entender mejor, leí en otro post tuyo la forma de colocar texto en $$\LaTeX$$ y me encantó la idea ya que justamente se está haciendo esto para cursos de matemática, lo interesante de esto es el problema que tuve con los permisos:

sh: /var/www/moodle/filter/tex/mimetex.linux: Permission denied

esto es un bug, no tan grave pero bug al fin y al cabo, en serio, yo tengo instalado el mimetex en mi máquina, ¿por qué quiere ejecutar su propio mimetex?:

¿Por qué no me pide el path del mimetex como lo hace por ejemplo con el dvips?

ahora si, ya estoy más tranquilo, para corregir esto lo que hice fué lo siguiente, edité la línea 40 del archivo moodle/filter/tex/lib.php cambié:

$executable = tex_filter_get_executable(false);

por

$executable = "mimetex";

y listo, ahora me gustaría que me orientaras, para ver la forma de informar de esto a los desarrolladores, así en el futuro las nuevas versiones de moodle tendrían la opción de preguntarnos dónde está el mimetex.

Saludos y muchas gracias.
En respuesta a Luis Saavedra

Re: Permiso y propietario de los archivos.

de José Rama -
1.-¿Que versión estas usando ?
2.- Los ejecutables de mime.* deben tener permisos de ejecución para todos, sino no van a correr.
3.- ¿Pq le pones como propietarios de root a los script de PHP y a www-data a los archivos de datos?, deberían pertenecer todos a www-data, es mas seguro.
4.- Poner $executable = "mimetex"; lo único que hace es dejar en manos del SO buscar el ejecutable y eso es peligroso en un entorno web, sobretodo si ademas el script se ejecuta como root ( por eso el owner debe ser el mismo del apache y nunca root, .
La función que modificaste lo que hace es en base al descriptor de SO elegir el ejecutable correspondiente, ver si existe y si tiene permisos de ejecución, dejar librado la búsqueda a ver si esta instalado es una opción, pero se me hace un tanto peligrosa.
En respuesta a José Rama

Re: Permiso y propietario de los archivos.

de Luis Saavedra -
1.-¿Que versión estas usando ?

R: estoy utilizando la moodle 1.9.2+ si mal no recuerdo.

2.- Los ejecutables de mime.* deben tener permisos de ejecución para todos, sino no van a correr.

R: Efectivamente, pero como instalé el paquete tetex-extra no ocupo mimetex (no es lo mismo, a mimetex le faltan símbolos).

3.- ¿Pq le pones como propietarios de root a los script de PHP y a www-data a los archivos de datos?, deberían pertenecer todos a www-data, es mas seguro.

mmm... esto es parte de mi ignorancia, ¿no sé que es más seguro:

rw_r__r__ root root
rw_r__r__ www-data www-data

quizá si coloco:

r__r__r__ www-data www-data

es mejor? Disculpa que sea tan paranóico pero justamente una respuesta a esto es lo que más me gustaría saber, ¿sabes de alguna página que hable al respecto?

4.- Poner $executable = "mimetex"; lo único que hace es dejar en manos del SO buscar el ejecutable y eso es peligroso en un entorno web, sobretodo si ademas el script se ejecuta como root ( por eso el owner debe ser el mismo del apache y nunca root, .
La función que modificaste lo que hace es en base al descriptor de SO elegir el ejecutable correspondiente, ver si existe y si tiene permisos de ejecución, dejar librado la búsqueda a ver si esta instalado es una opción, pero se me hace un tanto peligrosa


R: El script mimetex.linux no se ejecuta como root, pertenece a root el archivo pero lo ejecuta www-data, como se ejecutan todas las cosas.

Ahora entendí mejor como funciona mimetex dentro de moodle gracias a tu ayuda en otros hilos: si no funciona latex+dvips+convert entonces intenta con mimetex. Dejé sin permisos de ejecución a mimetex, y como tengo a latex+dvips+convert funcionando bien, ya no tengo problemas.

Saludos y muchas gracias.
En respuesta a Luis Saavedra

Re: Permiso y propietario de los archivos.

de José Rama -
punto 3. Siempre debes evitar que algo corra como root, tenes que configurar el apache para que utilize el usuario/grupo distintos de root.

Para ver mejor sobre el tema te recomiendo directamente las paginas de documentacion de apache, en particular esta
http://httpd.apache.org/docs/2.2/mod/mpm_common.html#user
En respuesta a José Rama

Re: Permiso y propietario de los archivos.

de Luis Saavedra -
Gracias José, parece que ya hemos acotado el problema lo suficiente, pero antes de continuar tengo que aclarar una cosa, yo estoy suponiendo que siempre se ejecutan los procesos a través del usuario www-data, y que en ningún caso se está haciendo lo contrario, ¿estoy en lo correcto, cierto?, mi problema es el siguiente, según entiendo, una vez que moodle está instalado y funcionando, el directorio moodle no se modifica con el uso, no se debería modificar y no hay que modificarlo en ningún caso, luego, para asegurarme que esto ocurra efectivamente, puedo quitar los permisos de escritura sobre estos archivos. Por otra parte, no es necesario que los archivos .php, ni .html, tengan permiso de ejecución para que funcionen correctamente, luego puedo quitar los permisos de ejecución sobre estos archivos, quedándo sólo los permisos de lectura, esto me funciona bien hasta el momento, no he tenido problemas, salvo cuando traté de ocupar mimetex (este es un programa que también trae moodle) el cual me pide permisos de ejecución para poder ocupar, esta es una buena pregunta:

¿qué archivos necesitan necesariamente permisos de ejecución?

R: Por el momento sólo sé que mimetex.linux lo necesita, ¿algún otro?

Saludos y mil gracias!!!
En respuesta a Luis Saavedra

Re: Permiso y propietario de los archivos.

de Luis Saavedra -
Me auto respondo, el problema de dejar como propietario a root de los archivos en la carpeta moodle es que estos deberán quedar así:

rw-r--r-- root root (archivos)
rwxr-xr-x root root (carpetas)

mientras que al dejar como propietario a www-data de los archivos en la carpeta moodle estos pueden quedar así:

r-------- www-data www-data (archivos)
r-x------ www-data www-data (carpetas)

y en seguridad mientras menos permisos más seguros los archivos, con esto último, sólo root y www-data pueden leer los archivos, mientras que antes cualquier usuario de la máquina podía leer los archivos, eso es menos seguro,

La configuración quedaría así:

Propietario (como dice José):

# chown -R www-data:www-data moodle
# chown -R www-data:www-data ../moodledata


Permisos de las carpetas:

# find moodle/ -type d | sed s/^/\"/g | sed s/$/\"/g| xargs -l chmod 500
# find ../moodledata/ -type d | sed s/^/\"/g | sed s/$/\"/g| xargs -l chmod 700


Permisos de archivos:

# find moodle/ -type f | sed s/^/\"/g | sed s/$/\"/g| xargs -l chmod 400
# find ../moodledata/ -type f | sed s/^/\"/g | sed s/$/\"/g| xargs -l chmod 600


Saludos y mil gracias por la ayuda!!!