miércoles, junio 03, 2009

Dar permisos en GNU/Linux con chmod


Muchas veces emos visto que damos permisos a archivos por seguridad e incliso en algunos post eh usado el comando chmod para poder ejecutar algo.

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 + Escritura2 + 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


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


Otra manera mas intuitiva podemos usar las letras w = Writer, r= read y x=execute de escritura, lectura y ejecucion y como aditivo "+" y sustractivo "-".

entonces para identificar a quien estamos dando el permiso podemos usar g=grupo y o=otros.

De esa manera estaremos usando el cmado de la siguiente manera:
$ chmod [responzable][operador][permiso] archivo/carpeta

Ejemplo:
chmod +x archivo/carpeta (estamos dando permiso de ejecucion al propietario sobre el archivo o carpeta especificada)

chmod g-w archivo/carpeta (estamos quitando permiso de escritura al grupo sobre el archivo o carpeta especificada)

chmod o+r archivo/carpeta (estamos dando permiso de lectura a los otros usuarios sobre el archivo o carpeta especificada)

0 comentarios:

 
Búsqueda personalizada