Curso Linux

Tema 6 – Administrando permisos

¡Bienvenidos de nuevo, amig@s!

En este tema vamos a ver como administrar los permisos de archivos y directorios. Vamos a ello:

Comprobando permisos

Cuando queremos ver los permisos de un archivo podemos usar simplemente el comando ls con el switch -l. Vamos a usarlo en el directorio /etc/NetworkManager y veamos que nos dice sobre los archivos.

Si echamos un vistazo a cada linea podemos ver rápidamente un poco de información sobre el archivo, incluido si es un archivo o directorio, los permisos sobre el archivo, el numero de links, el propietario, el grupo al que pertenece, el tamaño del archivo, cuando fue creado o modificado por última vez y finalmente veremos el nombre del archivo. Vamos a ir viendo cada uno de estos elementos.

Identificando un archivo o directorio

El primer carácter de la línea nos indica si es un archivo o directorio. Si la línea empieza con una ‘d’ es un directorio. Si empieza con un -‘ es un archivo.

Identificando los permisos

El siguiente grupo de caracteres definen los permisos del archivo. Veremos tres grupos de rwx que significan read (lectura), write (escritura) y execute (ejecución). Esto determina quien tiene permiso para leer, escribir o ejecutar el archivo. Cada grupo de rwx representa los permisos del propietario, del grupo y por último de todos los demás.

Vamos a echar un ojo al archivo NetworkManager.conf

Podemos ver que comienza con:

-rw-r--r--

Esto nos indica que es un archivo () donde el propietario tiene permisos de lectura (r) y escritura (w), pero no de ejecución ().

El siguiente grupo de caracteres representa los permisos del grupo. Aquí podemos ver que el grupo tiene permisos de lectura (r), pero no de escritura () o ejecución ().

El último grupo de permisos es para todos los demás. Como se observa en la siguiente imagen todos los demás solo tienen permiso de lectura (r) en el archivo NetworkManager.conf.

Cambiar los permisos

Imaginemos el caso de que queremos habilitar al grupo la posibilidad de escribir y ejecutar el archivo NetworkManager.conf. Linux tiene para ello un comando llamado chmod que nos permite cambiar los permisos de un archivo siempre y cuando seamos administradores o los propietarios del archivo. Estos permisos son representados por sus equivalentes binarios en nuestro sistema operativo. Vamos a aclarar esto un poco…

Numéricamente

Recuerda que todo son ceros y unos para nuestro sistema operativo y estos permisos son representados por interruptores en el sistema «activados» o «desactivados». Vamos a imaginar los permisos como tres interruptores de un sistema en base dos (binario), el interruptor de la derecha del todo representa 1 cuando está activado, el de en medio representa 2 cuando está activado y el de más a la izquierda representa 4 cuando está activado.

Por lo que los tres permisos aparecen así cuando están todos activados:

r w x
4 2 1 = 7

Si sumamos estos tres números obtenemos 7, ¿verdad? En Linux, cuando todos los interruptores de permiso están activos, podemos representarlo con el 7. Por lo que si queremos indicar que el propietario, el grupo y todos los usuarios tengan todos los permisos podríamos representarlo asi:

777

Ahora volvamos a nuestro archivo NetworkManager.conf. ¿Recordáis sus permisos? Eran rw-r–r–, y numéricamente quedaría algo asi:

r w - r - - r - -
4 2 0 4 0 0 4 0 0 

Esto puede ser representado como 644.

Cambiando los permisos de NetworkManager.conf

Ahora, si queremos dar permisos de escritura (2) y ejecución (1) al grupo tendremos que usar el comando chmod para hacerlo. Tenemos que añadir los privilegios de escritura (2) y ejecución (1) al archivo NetworkManager.conf. Lo haremos de la siguiente manera:

chmod 7 7 4 NetworkManager.conf

Esta sentencia indica que el propietario tendrá todos los permisos (4+2+1), el grupo igual (4+2+1) y los demás usuarios solamente tendrán permisos de lectura (4+0+0). Si hacemos ahora un listado con ls -l podremos ver que los permisos ahora para NetworkManager.conf son:

r w x r w x r - -

Fácil, ¿verdad?

Cambiando permisos con UGO

El método numérico es probablemente la forma más común de cambiar los permisos en Linux, pero tenemos otra manera de hacerlo con la que algunos podrían sentirse más cómodos con ella. Esta forma es normalmente referida como sintaxis UGO. UGO utiliza la U=usuario o propietario, G=grupo y O=otros. UGO tiene tres operadores:

+ para añadir un permiso
- para eliminar un permiso
= para asignar un permiso

Por lo que si queremos eliminar el permiso de escritura al grupo al que pertenece el archivo NetworkManager.conf sólo tendríamos que escribir lo siguiente:

chmod g-w NetworkManager.conf

Este comando indica «para el grupo (g) elimina (-) el permiso de escritura ( w ) en NetworkManager.conf«.

En la imagen anterior puedes ver que cuando comprobamos los permisos con ls -l el archivo NetworkManager.conf ya no tiene permisos de escritura para el grupo.

Si hubiese querido darle permisos de ejecución al usuario y al grupo podría haber escrito:

chmod u+x, g+x NetworkManager.conf

Este comando dice «para el usuario añade permisos de ejecución, para el grupo añade permisos de ejecución al archivo NetworkManager.conf».

 Bueno, pues esto es todo de momento. ¡Nos vemos en próximos artículos! No te olvides de revisar los temas anteriores 🙂
Estándar

Deja un comentario