linux-chmod-permisos-cambiar-recursive-rwx.jpg

Uno de los temas que mas escucha un administrador de Linux es: “son los permisos”. Es algo casi cotidiano asignar, cambiar, quitar, poner o verificar los permisos de un archivo o directorio. En general hablar de linux permisos” es como halar de “aire respirar” y todo esto se hace con el comando linux chmod. Aquí te digo como Cambiar Permisos Linux a archivos y directorios con el comando linux chmod y te lo explico de forma simple y con ejemplos.

 

Comando Linux chmod

Comencemos por decir que en Linux “TODO ES UN ARCHIVO”, esto es muy importante para entender que en Linux, trabajar con “cualquier cosa” involucra trabajar con archivos y se pueden asignar permisos para que esos archivos puedan ser leídos, modificados o ejecutados. Por lo anterior, si necesitas acceder a un DVD o al CD tienes que conocer lo que en windows sería la “Unidad asignada” como D: o F:, en Linux de igual forma existe una archivo de dispositivo que podría se /dev/cdrom pero ojo, es un archivo.

¿Qué son los Permisos en Linux?

Todo archivo en Linux tiene asignados una serie de permisos para que algunos o todos los usuarios del sistema puedan usar ese archivo, también se pueden dar permisos para que usuarios externos al sistema puedan o no acceder o modificar un archivo. Te recomiendo que veas este post para ver los detalles de como entender los permisos linux y como se representan. Es una lectura obligatoria para usar correctamente el comando chmod.

En general los permisos de un archivo se pueden leer así:

  +--------- u : Usuario  \
  |  +------ g : Grupo     |--- a : Todos
  |  |  +--- o : Otros    /
  |  |  |
 /|\/|\/|\
drwxrwxrwx 1 usuario grupo 0 Jul 8 12:20 Archivo de Ejemplo.txt 
|  
+------------ d : Es un Directorio
             - : Es un Archivo

¿Cómo Cambiar los permisos de un archivo?

El comando linux  chmod permirte cambiar los permisos de un archivo en Linux y si no tienes claro que son los permisos linux y como leerlos, te recomiendo que le des una visita a la primera página de este post. Como decía, el comando linux chmod te permite cambiar los permisos de un archivo y es algo muy simple.

¿Cómo Cambiar los permisos de un archivo?

La sintaxis del comando linux chmod es la siguiente:

chmod [Opción]… MODO[,MODO]… ARCHIVO…
chmod [Opción]… MODO-OCTAL ARCHIVO…

Cambiando permisos linux con chmod Primera Parte (Modo normal)

 

La primera forma de la sintaxis utiliza los modos o permisos mediante letras, que pueden ser rwxXst para los permisos y ugoa para los diferentes tipos de usuarios. Algo importante que tienes que saber es que en esta forma de manejar los permisos es que al no mencionar un permiso estas indicando que ese permiso está negado y solo afecta al tipo usuario que indiques, pero si no hay un tipo de usuario afectas a los tres tipos de usuarios o cuando usas “a”  (all-todos) como tipo de usuario. Veamos algunos ejemplo de esto.

Cambiar permisos de escritura y lectura para el usuario y solo lectura para el grupo y otros, aplicando estos permisos a todos los archivos con extensión .txt en el directorio actual. Este es el comando:

chmod go=r,u=rw archivo
$ ls -l
-rw-rw-rw- 1 lm lm 0 Jul 8 12:20 archivo de ejemplo.txt
-rw-rw-rw- 1 lm lm 0 Jul 8 12:20 Archivo de Ejemplo.txt
$ chmod go=r,u=rw *.txt
$ ls -l
-rw-r--r-- 1 lm lm 0 Jul 8 12:20 archivo de ejemplo.txt
-rw-r--r-- 1 lm lm 0 Jul 8 12:20 Archivo de Ejemplo.txt

Para quitar todos los permisos a un archivo puedes utilizar el modo a= te pongo un ejemplo:

chmod a= archivo
$ ls -l
-rwxrwxrwx 1 lm lm 0 Jul 8 12:20 ejecutable
$ chmod a= ejecutable
$ ls -l
---------- 1 lm lm 0 Jul 8 12:20 ejecutable

Quitar permisos para un archivo y solo permitir leer el archivo al propietario, esto puede ser utilizado para los certificados de cifrado.

chmod a=,u=r archivo
chmod u=r,go= archivo
$ ls -l
-rw-r--r-- 1 lm lm 5 Jul 13 12:17 centificado.pem
$ chmod a=,u=r *.pem
$ ls -l
-r-------- 1 lm lm 5 Jul 13 12:17 centificado.pem

Para dar permisos de ejecución a un archivo de forma que cualquier usuario pueda usar ese programa y arrancarlo

chmod +x archivo
$ ls -l
-rw------- 1 lm lm 0 Jul 8 12:20 ejecutable
$ chmod +x ejecutable
$ ls -l
-rwxr-xr-x 1 lm lm 0 Jul 8 12:20 ejecutable

Pero si solo debe ser ejecutable para el usuario debería usarse este otro comando

$ ls -l
-rw------- 1 lm lm 0 Jul 8 12:20 ejecutable
$ chmod u=rwx ejecutable
$ ls -l
-rwx------ 1 lm lm 0 Jul 8 12:20 ejecutable

¿Que ocurre cuando un archivo tiene todos los permisos para todos los usuarios y deseas que solo pueda ser ejecutable por el propietario? podemos usar el comando de esta forma:

chmod a=-,u=rwx archivo
chmod u=rwx,go= archivo
$ ls -l
-rwxrwxrwx 1 lm lm 0 Jul 8 12:20 ejecutable
$ chmod a=,u=rwx ejecutable
$ ls -l
-rwx------ 1 lm lm 0 Jul 8 12:20 ejecutable

Prueba las diferentes combinaciones que puedes usar de los permisos rwx para asignarlos a los diferentes tipos de usuario u, g, o, y a. Esto te ayudará a saber que resultado esperar cuando apliques esta forma de asignar o remover permisos, en lo personal no me gusta mucho para mí es mas fácil la otra forma que te explico en seguida.

Cambiando permisos linux con chmod Segunda Parte (Modo octal)

Para mi los permisos en formato octal son mas sencillos por que puede determinar rápidamente cuales son los permisos exactos que quieres establecer.

 

En este modo debes indicar un valor para cada tipo de usuarios: usuario, grupo y otros. La forma de poner estos permisos es con un número entre 0 (cero) y 8 (ocho) por cada tipo de usuarios, por ejemplo:

chmod 750 archivo

Donde el primer dígito (el siete) representa los permisos para el usuario, el segundo (el cinco) para el grupo y el tercero (el cero) para otros usuarios. Te explico como puedes saber que significa cada numero.

Lo primero que tienes que hacer es saber que hay un valor único para cada permiso, lectura es 4, escritura 2 y ejecución 1. Esto te lo muestro en la siguiente tabla:

Lectua Escritura Ejecución / Acceso
r w x
4 2 1

Viendo esto si quieres establecer un permiso solo tienes que sumar el valor, por ejemplo si quieres lectura, escritura y ejecución sumarás los tes, así:

Lectura   Escritura   Ejecución / Acceso   Valor Ocatal
r   w   x    
4 + 2 + 1 = 7

Si quieres tener un permiso de solo lectura, sin permiso de  escritura ni ejecución entonces podrías hacer la suma así:

Lectura   Escritura   Ejecución / Acceso   Valor Ocatal
r   w   x    
4 + 0 + 0 = 4

La tabla completa de posibles permisos es esta:

Lectua Escritura Ejecución  Valor Representación Permiso
r w x      
0 0 1  1 – – x Ejecución
0 2 0 2 – w – Escritura
 0 2 1 3 – w x Escritura y Ejecución
4 0 0 4 r – – Lectura
4 0 1 5 r – x Lectura y Ejecución
 4 2 0 6 r w – Lectura y Escritura
4 2 1 7 r w x Lectura, Escritura y Ejecución
 0 0 0 0 – – – Ningún permiso

Recuerda que los permisos que tiene cero quiere decir que se “niegan” lo que tiene el valor para cada permisos se “otorgan” entonces si queremos poner permisos a un archivo de lectura(4) y escritura(2) solo para el usuario y el grupo, sin permisos para otros podemos ponerlos así:

chmod 660 archivo

Veamos los mismos ejemplos del modo anterior.

Cambiar permisos de escritura y lectura para el usuario y solo lectura para el grupo y otros, aplicando estos permisos a todos los archivos con extensión .txt en el directorio actual. Este es el comando:

chmod 644 archivo
$ ls -l
-rw-rw-rw- 1 lm lm 0 Jul 8 12:20 archivo de ejemplo.txt
-rw-rw-rw- 1 lm lm 0 Jul 8 12:20 Archivo de Ejemplo.txt
$ chmod 644 *.txt
$ ls -l
-rw-r--r-- 1 lm lm 0 Jul 8 12:20 archivo de ejemplo.txt
-rw-r--r-- 1 lm lm 0 Jul 8 12:20 Archivo de Ejemplo.txt

Para quitar todos los permisos a un archivo puedes utilizar el modo a= te pongo un ejemplo:

chmod 000 archivo
$ ls -l
-rwxrwxrwx 1 lm lm 0 Jul 8 12:20 ejecutable
$ chmod 000 ejecutable
$ ls -l
---------- 1 lm lm 0 Jul 8 12:20 ejecutable

Quitar permisos para un archivo y solo permitir leer el archivo al propietario, esto puede ser utilizado para los certificados de cifrado.

chmod 400 archivo
$ ls -l
-rw-r--r-- 1 lm lm 5 Jul 13 12:17 centificado.pem
$ chmod 400 *.pem
$ ls -l
-r-------- 1 lm lm 5 Jul 13 12:17 centificado.pem

Para dar permisos de ejecución a un archivo de forma que cualquier usuario pueda usar ese programa y arrancarlo

chmod 755 archivo
$ ls -l
-rw------- 1 lm lm 0 Jul 8 12:20 ejecutable
$ chmod 755 ejecutable
$ ls -l
-rwxr-xr-x 1 lm lm 0 Jul 8 12:20 ejecutable

Pero si solo debe ser ejecutable para el usuario debería usarse este otro comando

$ ls -l
-rw------- 1 lm lm 0 Jul 8 12:20 ejecutable
$ chmod 700 ejecutable
$ ls -l
-rwx------ 1 lm lm 0 Jul 8 12:20 ejecutable

¿Que ocurre cuando un archivo tiene todos los permisos para todos los usuarios y deseas que solo pueda ser ejecutable por el propietario? podemos usar el comando de esta forma:

chmod 700 archivo
$ ls -l
-rwxrwxrwx 1 lm lm 0 Jul 8 12:20 ejecutable
$ chmod 700 ejecutable
$ ls -l
-rwx------ 1 lm lm 0 Jul 8 12:20 ejecutable

Puedes darte cuenta que ahora es mas fácil leer esa cadena de rwxrwxrwx o rw-r–r– pues puedes cambiar r por un 4, w por un 2 y x por un 1 (uno) y de pronto todo tiene sentido, ayúdate de la tabla que te muestro arriba y practica cambiando los permisos de un archivo.

linux-chmod-permisos-linux-comandos-en-la-interfaz-grafica.png

Este tema de los permisos no es sencillo, así que si de primero leíste todo esto no te preocupes si no le entiendes del todo, a mi me pasó cuando iniciaba en Linux, pero solo es cuestión de que comiences a empaparte con Linux y cuando comienzas a usar o a configurar el sistema vas entendiendo esto de los permisos cuando ves los ejemplos prácticos de como afectan los permisos el comportamiento o la seguridad de un sistema. Todo es cuestión de ser persistente y de probar.

Acuérdate que mientras no estés frente a un sistema de algún cliente o empresa que facture miles de dolares no tienes de que preocuparte si pruebas y cambias algunos permisos que luego no funcionen o que causen que no se puedan ver archivos o lo que sea. Te puedes equivocar las veces que sea necesario para que ganes experiencia con esto de los permisos y si algo pudiera salir mal aprendiste y puedes comenzar de nuevo en tu sistema linux.

 

Fuente: comoinstalarlinux

¿Quién está en línea?

Hay 28664 invitados y ningún miembro en línea