Spiga

CHMOD, jugando con los permisos.

Al descargar paquetes y descomprimirlos, intentar manipular archivos, editarlos o simplemente eliminarlos, muchas veces me encuentro con:

[ Error: Permiso denegado ]

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"


.- Nota final:
Esto seria lo básico a tener en cuenta cuando usemos el comando CHMOD desde consola. Espero que esto haya despejado alguna duda existente, por mi parte lo ha hecho.


Basado en CHMOD, asignando permisos de ignside.net

Enlace de interés sobre CHMOD (gracias koki ;D)

9 comentarios:

  Koki

17 de abril de 2007, 5:09

Buena explicación.

Una forma sencilla de asignar permisos es usando "ugo": (u)suario, (g)rupo, (o)tros

chmod go=rw archivo

da permisos de lectura y escritura al (g)rupo y a los (o)tros.

chmod u=rwx archivo da todos los permisos al usuario.

Una página con un tutorial y la posibilidad de probar en linea algunos ejemplos con chmod es esta

  NeoDaVe

17 de abril de 2007, 6:50

Ups, esa parte me la salte :D

Ei, define toda mi parrafada en 10 lineas hahah

  tiger_2075

27 de septiembre de 2007, 22:22

super weno el manual me ayudo mucho y aclaro muchas cosas , super para los nius de linux

  coke

9 de mayo de 2008, 15:50

¿Cómo es posible que inserte mi lápiz de memoria, no pueda escribir e intente cambiar los permisos con un:
sudo chmod -R 777 /media/disk
y no me deje cambiarlos devolviendo para cada archivo:
"chmod: cambiando los permisos de `/media/disk/Fotos/IMG_9104.JPG': Sistema de solo lectura"?

Parece que lo monta como si fuese un CD: sólo-lectura.

Para más INRI, en Window$ sí que me deja escribir.

  NeoDaVe

11 de mayo de 2008, 1:35

Hola Coke:

Que formato tiene dado ese lápiz?

  coke

12 de mayo de 2008, 13:55

Hola neodave, gracias por contestar.

En el primer comentario ni saludé ni me despedí. Perdón por las formas.

Aunque no valga de excusa, es el primer problema grave que no consigo solucionar en Ubuntu. Y no paro de buscar y leer por aquí y por allá. Y de preguntar, claro.

El formato es vfat.

En realidad, el problema lo tengo en dos lápices de memoria, de los tres que tengo.

Los tres están en vfat.

Muchas gracias de nuevo y un saludo.

  feryx

2 de junio de 2008, 0:07

muy buen comentario. gracias por la informacion

  Hernán

16 de julio de 2008, 15:36

Googleando he llegado a esta guia que esta realmente bien. Sin embargo no puedo resolver el problema que tengo. Aqui van los pasos que he dado:

[hernan@AMD slitaz]$ ls -l /dev/hda5
brw-rw---- 1 root root 3, 5 Jul 16 10:07 /dev/hda5
[hernan@AMD slitaz]$ chmod 777 /dev/hda5
chmod: changing permissions of `/dev/hda5': Operation not permitted
[hernan@AMD slitaz]$ su
Password:
[root@AMD slitaz]# chmod 777 /dev/hda5
[root@AMD slitaz]# ls -l /dev/hda5
brwxrwxrwx 1 root root 3, 5 Jul 16 10:07 /dev/hda5
[root@AMD slitaz]#
[root@AMD slitaz]# mkdir /media/slitaz/boot
[root@AMD slitaz]# ls
boot/
[root@AMD slitaz]#
Como veran he podido cambiar los permisos y crear carpeta en el disco. pero al reiniciar la PC todo vuelve como al principio, como si no se hubiese grabado nada. El disco esta en formato ext3.
Me tiran una pista, por favor. Gracias.

  Fernando

3 de junio de 2010, 17:00

buenisimo

Increiblemente practico y sencillo

Te felicito