domingo, 16 de agosto de 2009

Cambiando permisos con chmod

Tengo en mi equipo una partición que utilizo para compartir archivos (música, imágenes, video, etc) entre los 2 sistemas operativos que tengo instalados (Ubuntu y Windows 7) .
Sucede que estando en Windows, hice algunas carpetas con contenido variado, y cuando acceso a la misma carpeta desde Linux puedo ver los archivos, pero no puedo modificar nada (sólo lectura)... es ahí cuando empecé a buscar la manera de cambiar los permisos de aquella carpeta para que pudiese escribir datos en ella, tal como lo hago en Windows.
Googleando me encuentro con el blog de Martín (Tinchio), en el que explica como usar el comando chmod, para cambiar los permisos de acceso en linux...

En este tutorial les voy a explicar como poder cambiar los permisos de un archivo o carpeta en Linux usando el comando chmod. La explicación la dividi en 2 partes porque a pesar de ser el mismo comando podremos realizar la misma tarea usando 2 metodos distintos (siempre con chmod), entonces voy a tratar un método en cada parte.

Antes de continuar una breve explicación de que es este comando. Chmod viene del ingles “change mode” (cambiar modo); y es un comando de los sistemas Unix que permite cambiar los permisos de acceso a un archivo o carpeta.

Cambiar permisos usando numeros

Este es tal vez el uso mas conocido de chmod, y al principio (en comparación con el 2do metodo) me parecio un poco más complicado pero despues de practicarlo un poco me resulto más facil. La idea basicamente es que vamos a cambiar los permisos nuestros, de nuestro grupo, y del resto usando solo una combinación de un número de 3 cifras. Pero para entenderlo bien hay que saber que significa cada numero

4 = lectura
2 = escritura
1 = ejecución

Ahora que sabemos esto podemos entender las posibles combinaciones de estos números

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

Con esto ya sabemos que segun la combinación que armemos seran los permisos que asignemos. Bien, pero estos permisos se los podremos aplicar a 3 “grupos”: a nuestro usuario, a nuestro grupo de usuario, y al resto de los usuarios. Para entender bien como funciona esto veamos el siguiente ejemplo:

$ chmod 775 archivo

lo que hicimos en este ejemplo fue aplicar los siguientes cambios:

A nuestro usuario le dimos permisos de ejecución, lectura y escritura; al igual que a nuestro grupo. En cambio al resto de los usuarios solo les dimos permisos de lectura y escritura. Como se esto? mirando el numero “775″ del comando. La primer cifra corresponde a nuestro usuario (el primer “7″). La segunda cifra corresponde a nuestro grupo, y la tercer cifra corresponde al resto de los usuarios. Entonces sabiendo esto ahora es solo cuestion de “jugar” con las combinaciones de números y ver que es lo que pasa.

Otro ejempo más, le daremos permisos de solo lectura a un archivo

$ chmod 444 archivo

y ahora le daremos a nuestro usuario todos los derechos y al resto solo permisos de lectura

$ chmod 744 archivo

Como ven es muy facil, solo hay que aprender para que sirve cada número, y de ahi en más solo ir probando.

Una último tip, lo mismo que vimos anteriormente sirve también para las carpetas. Pero si trabajamos con carpetas querremos aplicar una regla para todo su contenido, entonces para no repetir la operación muchas veces solo lo hacemos una vez pero de forma recursiva, usando la ocpion -R asi:

$ chmod -R 777 carpeta

Ah y no se olviden que para usar el comando chmod deberan estar como root o usar sudo.

Cambiar permisos de ejecución sin usar los números

Para poder usar este método, al igual que el anterior, debemos aprendernos algo. Vamos a utilizar unas opciones segun nuestras necesidades, y estas seran “u” para el usuario dueño, “g” para el grupo dueño, “o” para el resto de los usuarios, y “a” para todos los usuarios, incluyendo usuarios de sistema, usuario y grupo dueños. Sabiendo esto estamos en condiciones de entender esta forma de usar chmod, que seria asi:

$ chmod [quien][+/-][permiso] [archivo o carpeta]

donde en [quien] es alguno de los parametros anteriormente explicados (u,g,o,a), [+/-] es para asignar o quitar el permiso que elijamos. En [permiso] podremos colocar: lectura (r), ejecución (x), escritura (w). Veamos un ejemplo

$ sudo chmod a+x archivo

aqui le hemos asignado permisos de ejecución para todos los usuarios en el archivo de prueba que utilizamos. Ademas como en el método anterior, la opcion -R sigue disponible en caso que deseemos hacerlo recursivamente para una carpeta, ejemplo:

$ chmod -R a+rwx carpeta/

aqui le asignamos, en forma recursiva, a todos los usuarios permisos de lectura, escritura y ejecución sobre el fichero “carpeta”.

Más claro echarle agua... xD

1 comentario:

Anónimo dijo...

Qué paciencia :P pero me ha ayudado mucho pues estoy comenzando a usar linux jeje, saludos :D

Para mi cumple...

Así que vamos juntando platita pal regalo XD jajajajajaja