06 Dic

Permisos en Linux con chmod

Nunca viene mal recordar algunos detallitos para la gestión y administración de permisos en Linux. Aqui os dejo una guia para aprender a utilizar el comando chmod.

Este comando se aplica sobre ficheros o carpetas, en el caso de que sean carpetas podemos usar la opcion -R para dar permisos recursivamente a todas las carpetas y ficheros que contenga recursivamente.En cuanto a la sintaxis del comando, podemos decir que responde a

chmod [opciones] XXX nomFichero/nomCarpeta

donde en opciones podemos expecificar por ejemplo cosas como -R, XXX es el número de permisos tal y como especificamos a continuación:

Relación Numérica con los Permisos

0 = Ningún permiso (Lectura = 0 + Escritura = 0 + Ejecución= 0)
1 = Permiso de Ejecución (Lectura = 0 + Escritura = 0 +Ejecución = 1)
2 = Permiso de Escritura (Lectura = 0 + Escritura = 2 +Ejecución = 0)
3 = Permiso de Escritura y Ejecución (Lectura = 0, Escritura =2, Ejecución = 1)
4 = Permiso de Lectura (Lectura = 4 + Escritura = 0 +Ejecución = 0)
5 = Permiso de Lectura y Ejecución (Lectura = 4 + Escritura = 0 + Ejecución = 1)
6 = Permiso de Lectura y Escritura (Lectura = 4 + Escritura =2 + Ejecución = 0)
7 = Permiso de Lectura, Escritura y Ejecución (Lectura = 4 +Escritura = 2 + Ejecución = 1)

Luego, por cada Identidad, podemos obtener un número comprendido entre 0 y 7, que delimitarán por Identidad, claramente, sus privilegios en particular sobre un archivo o carpeta.

¿Entonces, que es, por ejemplo, chmod 644?
Son los Permisos que tiene asignados cada Identidad, sobre un archivo o carpeta, según su Relación Numérica. Siempre siguiendo este orden:

Propietario = 6 (Puede Leer y Escribir)
Grupo = 4 (solo puede Leer)
Otros = 4 (solo puede Leer)

Nota: Evidentemente el comando chmod contiene muchas más opciones y formas de asignar permisos, puedes consultarlas consultando el manual del comando, para ello abre un terminal y teclea:

man chmod

Alesete nos da un apunte más para recordarnos que el número de los permisos no está decidido al azar, sino que se basa en reglas binarias, tal y como nos detalla en su comentario:

La “regla” de los números quedaría mejor explicado y entendible si la explicas en binario:
// el 1 activa el permiso, el 0 lo apaga

Lectura escritura ejecución
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

Pues eso, para los que no entendiesen la relación, que vean que no está hecha al azar, si no que tiene su por qué y así no te lo tienes que aprender de memoria y nunca se te olvida

Enviado por Mariano D’Agostino el 29 de Mayo de 2009
Clic derecho sobre el directorio

Si usted es uno de los que piensan, como yo, que Linux es más apropiado que Windows en lo que respecta a servidores web, seguramente tendrá en algún momento de su vida, problemas con los permisos de Linux.

Un poco de teoría.

En este artículo se asume que usted conoce un poco de como trabajan los permisos de archivos en Linux. Si no es así recomiendo revisar este concepto antes.
Hay mucha documentación sobre este tema, y para no equivocarme en el concepto directamente recomiendo la lectura de http://es.wikipedia.org/wiki/Permisos_de_acceso_a_archivos
en donde dice:
Los permisos de sistemas UNIX se dividen en tres clases, conocidas como usuario, grupo y otros (con frecuencia abreviado UGO, por sus siglas en inglés, User, Group, Others). De hecho, los permisos en Unix son una forma simplificada de listas de control de acceso (ACLs).

El directorio files:

Al momento de instalar Drupal, se nos solicita que creemos un directorio llamado files y le demos permisos de escritura.
Este directorio será el que alojará los siguientes archivos entre otros:

  • Archivos adjuntados a los nodos.
  • Imágenes redimensionadas de imagecache.
  • Ficheros css comprimidos por el cache de drupal.
  • Ficheros js comprimidos por el cache de drupal.
  • Los themes construidos a partir del colorpicker, como garland en verde, rojo o azul.

El reporte de estado de Drupal indicará si puede o no escribir en el directorio files de Drupal.
Problemas con los permisos:

No se puede escribir en el directorio

Se puede escribir en files:

Se puede escribir en el directorio

En algunos tutoriales también se recomienda darle permisos de escritura de esta manera

chmod -R 777 files

En otros,

chmod -R 755 files

A decir verdad, este número, 777 (puede ser inseguro), o 755 o el que se use, depende directamente de la configuración del servidor.

¿Quién usa files?

La pregunta que debería hacerse entonces, es quién va a escribir en el directorio files.
En principio, seguramente será apache. Cada vez que usted adjunte un archivo a un modulo o reconstruya el cache de css, Drupal le dirá a apache que tiene que guardar estos archivos en el directorio files.
Por lo tanto, en principio con esta configuración debería bastar.

Aclaración: Este artículo asume que para convertirse en root usted escribe su, en ubuntu debería escribir sudo su
su
chown www-data files
chmod -R 700 files

Esto le daría permisos de, lectura, escritura y ejecución al usuario de apache (www-data), por y de esta manera podrá escribir y leer en el directorio files.
Sin embargo, que sucede si usted, como webmaster necesita navegar el directorio files desde, por ejemplo, una conexión SSH.
En ese caso, tal vez sea recomendable que el directorio files sea propiedad del usuario, por ejemplo webmaster y apache tenga permisos de escritura a través del grupo

su
chown webmaster:www-data files
chmod -R 770 files

Ahora usted podrá navegar ese directorio a través de ssh.
Sin embargo, si quiere estar seguro de que todo funcione, correctamente, debería darle permisos al grupo “otros” al menos, en forma de lectura.

su
chown webmaster:www-data files
chmod -R 774 files

Si usted no va a acceder de ningun modo al directorio files, y dejará que drupal se encargue, entonces tal vez la mejor configuración sea,

su
chown www-data files
chmod -R 744 files

Los demás archivos

Todos los demás archivos no deben modificables por apache, ni por ningun otro tipo de usuario.
Si usted (webmaster) es dueño de los archivos, tal vez la mejor configuración sea:

chmod 644 settings.php

y aplicarla a todos los archivos del sitio.

Nota: Si usted llegó aquí intentando solucionar problemas con imagecache, tenga en cuenta dos cuestiones:
  • Primero, parece ser que imagecache solo funciona con URL Limpias activas.
  • Segundo, si tiene problemas con algunas imágenes y con otras no, pruebe de aplicar los permisos recursivamente a todos los directorios dentro de files como se indica en el aquí

Para clientes FTP

Si bien todos los ejemplos de arriba asumen que usted tiene acceso SSH, con un cliente FTP “debería” poder hacer lo mismo. Digo debería porque solo lograra resultados 100% confiables si puede acceder como root al FTP, sino dependerá de la configuración de su servidor.
En este caso utilizando FileZilla, puede hacer clic derecho en el directorio en cuestión:
y Luego verá los permisos que se mencionaban anteriormente. Pudiendo definir si se deben aplicar a todos los subdirectorios, o solo a los archivos.

Permisos de archivo y directorio

Share this

Leave a reply