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.