777 El Nuevo 666

publicado en linux, plesk, seguridad

777 hoy día significa tener la puerta abierta a todo el mundo, esa no es una práctica segura, los permisos de los archivos en un entorno Linux / Unix son una herramienta poderosa que en la mayoría de los casos es dejada atrás por el famoso 777

Cada uno de esos números tiene una función para dar o denegar permisos en base a lo siguiente:

Permisos de usuario     Permisos de Grupo   Permiso a otros
                  7                     7                 7

Dentro de cada tipo de permiso en función de los bit’s se dan permisos de Lectura (r) Escritura (w) y Ejecución (x)

r  w  x   valor numérico
0  0  0     0
0  0  1     1
0  1  0     2
0  1  1     3
1  0  0     4
1  0  1     5
1  1  0     6
1  1  1     7

Sabiendo todo lo anterior terminamos ejecutando lo siguiente:

1
chmod -R 777 /var/www/patito.com/proyecto

Ya que nos hemos visto forzados a realizar comandos así para que corra la aplicación, en lugar de dar solo permisos a unas cuantas carpetas y/o archivos que en realidad lo necesitan.

Esto se debe a que la mayoría de las configuraciónes y en particular para el caso de Plesk si hacemos un ls -l

En nuestro directorio vamos a tener algo parecido a esto:

r--rw-r--r--  1 patito   psacln     397  Aug 12 2011 index.php

Pero qué pasa si nos vamos a un directorio donde se suba algún archivo desde nuestra aplicación veremos algo como esto:

r--rw-rw-rw-  1 www    www         53481  Aug 19 2011 imagen.png

Con los resultados de arriba tenemos dos usuarios y dos grupos diferentes en los archivos de nuestra aplicación, esto se debe a que el servidor web está ejecutando los scripts por medio de un módulo (mod_php) con el usuario que ejecuta servidor web y por seguridad estos usuarios tienen accesos limitados.

Una mejor practica sería tener configurado nuestro lenguaje de scripts vía CGI o FastCGI que en conjunto con el módulo suEXEC nos permite configurar qué usuario queremos que ejecute nuestros scripts por lo tanto ser menos flexibles con los permisos eliminando la necesidad de dar permisos a usuarios como www, apache, http y muchos otros que se encargan de la ejecución del servidor web.

Una configuración recomendada quedaría de la siguiente manera

Archivos estáticos / editables por la app / uploads: chmod 640

-rw-r----- 1 misitio    psacln 49364855 feb  1 22:04 upload.txt

Scripts ejecutables: 440

-r--r----- 1 misitio    psacln 49364855 feb  1 22:04 index.php

En el caso de los directorios

Directorios donde se alojan archivos para manipulación / libs : 750

drwxr-x--- 3 misitio    psacln    4096  sep 13 17:49 reportes

Directorios de ejecución (500, 510, 550)

dr-x------ 3 misitio    psacln    4096  sep 13 17:49 actions
dr-x--x--- 3 misitio    psacln    4096  sep 13 17:49 actions
dr-xr-x--- 3 misitio    psacln    4096  sep 13 17:49 actions

Si quieres encontrar que archivos tienen estos permisos puedes ejecutar el siguiente comando

1
2
3
4
 
find . -perm 777 -type f #solo archivos desde la ubicación actual

find . -perm 777 -type d #solo carpetas desde la ubicación actual

Publicado originalmente en: http://blog.vincoorbis.com/777-el-nuevo-666 el 22 de febrero de 2012


Comentarios