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 = lecturaPor lo cual si a un archivo le damos un permiso de 765, estamos diciendo que:
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
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 accesoAsí pues un archivo con permisos; rwx r-x r-- nos estaría diciendo que:
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
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:
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
17 de abril de 2007, 6:50
Ups, esa parte me la salte :D
Ei, define toda mi parrafada en 10 lineas hahah
27 de septiembre de 2007, 22:22
super weno el manual me ayudo mucho y aclaro muchas cosas , super para los nius de linux
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.
11 de mayo de 2008, 1:35
Hola Coke:
Que formato tiene dado ese lápiz?
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.
2 de junio de 2008, 0:07
muy buen comentario. gracias por la informacion
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.
3 de junio de 2010, 17:00
buenisimo
Increiblemente practico y sencillo
Te felicito
Publicar un comentario