16 de juny 2009

chmod

Cansado de tanto mensaje me puse manos a la obra y busque (mas bien refresque la memoria) una solución con uno de los comandos que antiguamente usaba cuando me surgían los mismos problemas al trastear archivos y carpetas del FTP. De tal manera y como se que mucha gente puede tener el mismo problema decidí hacer mi "guía definitiva" sobre CHMOD.

"CHMOD ("Change mode") es un comando UNIX que permite cambiar los permisos de acceso de un archivo. Cada archivo tiene nueve clases de acceso, que pueden ser permitidas o denegadas. Se pueden aplicar diferentes permisos al dueño del fichero, al grupo al que el fichero pertenece y al resto de usuarios. Cada una de estas tres clases de usuarios (dueño, grupo, resto de usuarios) puede tener permisos de lectura, escritura y ejecución"
(definición procedente de ignside.net)


1.- Entender su uso
Lo primero que hay que tener en cuenta es que los permisos que tiene un archivo son para; dueño, grupo y resto. Si tenemos en cuenta esto cuando escribimos; "chmod dgr", la "d" pertenecería a los permisos del "dueño", la "g" a los del "grupo" y la "r" a los de el "resto" de usuarios. Ejemplo:

# chmod 765

Con esto le estamos dando un permiso de "7" al dueño, un permiso de "6" al grupo y uno de "5" al resto.


2.- Tipos de permisos:
Existen 3 tipos de permisos; "r", "w" y "x".

"r" o "Read" (lectura): El archivo/carpeta solo puede ser leído, pero no modificado.
"w" o "Write" (escritura): El archivo/carpeta puede ser modificado.
"x" o "eXecute" (ejecución): El archivo/carpeta puede ser ejecutado.


3.- Como saber el tipos de permiso:
Para ver los tipos de permisos desde consola necesitamos poner ls -l (ls = listado -l = utilizar un formato de listado largo, o mostrar atributos) dentro de la carpeta en la que queremos ver los atributos. Usare como ejemplo la carpeta Amarok que se encuentra dentro de mi papelera (.Trash):

# ls -l
-rw-r--r-- description-pak
drwxr-xr-x doc-pak
-rwxr-xr-x libtool
-rw------- libtool.save

La información es mucho más detallada, pero he puesto esto como esquema de lo que os encontrareis cuando ejecutéis "ls -l".


4.- Fijando permisos, con números:
En este punto es donde conoceremos los diferentes permisos que le podemos dar a cada archivo/carpeta con el comando CHMOD. Los permisos serán los siguientes:

4 = lectura
2 = escritura
1 = ejecución

6 (4+2) = lectura y escritura
5 (4+1) = lectura y ejecución
3 (2+1) = escritura y ejecución
7 (4+2+1) = lectura, escritura y ejecución

Por lo cual si a un archivo le damos un permiso de 765, estamos diciendo que:

El dueño tiene permiso de lectura, escritura y ejecución; el grupo tiene permiso de lectura y escritura; y el resto tiene permiso de lectura y ejecución.


4b.- Fijando permisos, con letras:
En esta ocasión veremos los diferentes permisos, pero esta vez con letras:

0 = --- = sin acceso
1 = --x = ejecución
2 = -w- = escritura
3 = -wx = escritura y ejecución
4 = r-- = lectura
5 = r-x = lectura y ejecución
6 = rw- = lectura y escritura
7 = rwx = lectura, escritura y ejecución

Así pues un archivo con permisos; rwx r-x r-- nos estaría diciendo que:

El dueño tiene permiso de lectura, escritura y ejecución; el grupo tiene permiso de lectura y ejecución; y el resto tiene permiso de lectura.

Para dar permiso a un archivo pondremos delante del tipo de permiso que le queremos dar "+" o "-" para activar (+) o desactivar (-) el/los atributo/os. Por lo cual si usamos; "chmod -w archivo.sh" le estaremos diciendo al sistema lo siguiente:

Desactivar el atributo "escritura" y "ejecución" (en este caso) del fichero "archivo.sh"