Permisos de archivos y carpetas en UNIX y LINUX – Tipos de permisos y como cambiarlos. (suid, sgid y persistencia).

Los permisos en Linux son un conjunto de reglas y configuraciones que determinan qué acciones pueden realizar los usuarios y grupos sobre los archivos y directorios del sistema. Estos se dividen en diferentes formatos, los cuales hacen que la seguridad de los sistemas aumente y el control sea mayor. Y aunque en un principio este sistema de permisos pueda parecer complicado, podrás ir conociendo diferentes ejemplos para que puedas ponerlo en práctica por tu cuenta en Linux.
Debes saber que los permisos se dividen en tres categorías principales y que cada categoría tiene tres tipos de permisos: lectura, escritura y ejecución. Según la categoría, pueden ser:

• Propietario: El propietario es el usuario que creó el archivo o directorio. Este tiene el control total sobre los permisos y puede modificarlos según sus necesidades. Los permisos del propietario afectan directamente al usuario que creó el archivo.

• Grupo: En Linux, los usuarios se organizan en grupos y un archivo o directorio puede pertenecer a uno de estos grupos. Los permisos asignados al grupo afectan a todos los usuarios que forman parte de ese grupo, permitiéndoles acceder y modificar archivos en conjunto.

• Otros: Este conjunto de permisos se aplica a cualquier usuario que no sea el propietario ni esté en el grupo especificado. Los permisos otorgados o denegados a otros usuarios aseguran que el sistema permanezca protegido contra accesos no autorizados.

La combinación de estas tres categorías y sus respectivos permisos crea un sistema que permite el control sobre quién puede hacer qué con un archivo o directorio. El uso principal de los permisos en Linux es garantizar la seguridad y la privacidad de los datos, al tiempo que permite la colaboración y el acceso necesario para los usuarios autorizados.

Puede parecer simple, pero todo puede llegar a tener cierta complejidad a la hora de asignar los permisos en Linux. Todos ellos se pueden aplicar de diferentes formas. Tanto en red, con diferentes usuarios en un servidor, como en loca. Donde varios usuarios pueden manejar un mismo PC, con algunos recursos compartidos entre sí.

• Lectura (r): Es el primer permiso que podemos encontrarnos. Este nos da la opción de que un usuario pueda ver el contenido al que quiere acceder.

• Escritura (w): Nos da la posibilidad de otorgar poder sobre sobre un archivo. De esta forma podrá ser modificado, al igual que un directorio.

• Ejecución (x): Permite a los usuarios ejecutar diferentes parámetros dentro del equipo.

• Sin permisos (-): Nos indica que el usuario no tiene ningún tipo de permiso sobre el recurso de red o contenido compartido.

Los diferentes niveles de permisos en Linux, se encargan de definir algunos parámetros en cuanto a las posibilidades de uno o más usuarios sobre un determinado archivo. En este caso, hay uno que es para el propietario, mientras que el otro se usa para los usuarios del mismo grupo que el propietario. Por otro lado, hay un tercer permiso que se usa para los demás usuarios.

Para que te hagas una idea más clara de cuáles son los niveles de permisos que hay, estos se dividen en tres secciones.

• Permisos de propietario: Se trata del usuario que crea el archivo desde su equipo. Linux asigna a este usuario el acceso a la información creada, y la posibilidad de realizar cambios sobre el mismo. Este se identifica con el parámetro «u».

• Permisos de grupo: Cuando un usuario pertenece a un grupo dentro del directorio de Linux, quiere decir que se le otorgan los mismos permisos que tienen los demás usuarios que pertenecen a ese mismo grupo. El sistema identifica esto con el parámetro «g».

• Permisos del resto de usuarios: En este caso nos referimos a los usuarios que no son los creadores del archivo, ni pertenecen al grupo que hemos indicado anteriormente. Los permisos y accesos de estos usuarios los puede establecer el propietario. El sistema los establece con el parámetro «o».

En el anterior ejemplo, tenemos los permisos «drwxr-xr-x», esto significa lo siguiente:

• d: directorio

• rwx: permisos de lectura, escritura y ejecución para el usuario propietario del directorio.

• r-x: permisos de lectura y ejecución para el grupo propietario del directorio.

• r-x: permisos de lectura y ejecución para otros del directorio.

Si queremos que solo el usuario propietario pueda leer, escribir y ejecutar un determinado archivo, tendríamos que ver lo siguiente:

Por ejemplo si solo queremos que el usuario propietario pueda leer, escribir y ejecutar un determinado archivo, tendríamos que ver lo siguiente en los permisos del archivo :

-rwx——

CÓMO CAMBIAR LOS PERMISOS DE ARCHIVOS Y CARPETAS

El comando que debemos utilizar para realizar esta tarea es chmod, esta será la herramienta con el que podremos añadir o quitar permisos, tanto a un archivo como a una carpeta existente en el sistema de fichero de nuestro sistema operativo. Para realizar esta configuración con chmod, podremos realizarlo de dos formas diferentes, utilizando letras que es más «humano» pero más largo, y también números en formato «octal», que es mucho más rápido. Esta última forma es nuestra favorita por la rapidez, aunque, es posible que en un primer momento te guste más utilizar letras, porque se entiende mucho mejor.

Los sistemas de archivos de Unix, servidores Linux, cada archivo cuenta con sus permisos los cuales se regulan en base a tres clases:

• Propietario (User): De forma general cualquier usuario que crea un archivo en el sistema, se define como propietario de forma automática. Esto se puede modificar con el comando chown.

• Grupo (Group): Este se encarga de agrupar a varios usuarios. Aquí cada cuenta funciona a modo de subordinada al grupo inicial de forma automática, pero a la vez los usuarios pueden pertenecer a más grupos.

• Otros usuarios (Other): Se encarga de comprender a los usuarios que no son propietarios de ningún archivo, ni forman parte de ningún grupo.

LETRAS

En este modo se asignan letras a todas las clases de usuarios y a todos los permisos de accesos posibles. Si se combinan, estos pueden definirse de forma sencilla en cuanto a los permisos que otorgar o retirar, y a que usuarios. Si vas a utilizar letras para añadir o quitar permisos de una carpeta o archivo, debemos tener en cuenta los roles, símbolos y los permisos. Existen tres tipos de roles:

• u: usuario
• g: grupo
• o: otros
• a: todos (all), si necesitas aplicar el mismo permiso a usuario, grupos y otros, usa «a» para ahorrar tiempo.

Dos tipos de símbolos, que usaremos si la asignación de los permisos se realiza en modo simbólico, para vincular estos a los usuarios se usarán los siguientes símbolos.

• +: añadir permisos
• -: quitar permisos
• =: especifica los permisos fijados.

Tres tipos de permisos que podemos asignar a los usuarios.

• r: lectura: Permite a los usuarios la lectura de un determinado archivo o directorio.
• w: escritura: Da al usuario la posibilidad de modificar el archivo sobre el cual se le han dado permisos.
• x: ejecución: Otorga la posibilidad de ejecutar un archivo.

A continuación, os ofrecemos una serie de ejemplos para que veáis de qué estamos hablando:

Dar permisos completos de lectura, escritura y ejecución a todos los roles, tanto usuario como grupo como otros:

chmod ugo+rwx archivo

Quitar permisos de lectura, escritura y ejecución a otros usuarios:

chmod o-rwx archivo

Al final, todo radica en combinar los roles, símbolos y permisos en función de la necesidad que tengamos.

BASADO EN OCTAL USANDO NUMEROS

El comando chmod también es compatible con otra nomenclatura que os vamos a enseñar y que está basada en octal.

Imaginad que los permisos del propietario (r w x) están identificados por 0 y 1. Es decir, si por ejemplo queremos dar permisos de lectura y escritura solamente (y no permisos de ejecución) sería: 110. Si queremos solo el permiso de lectura sería: 100.

Por lo tanto, teniendo en cuenta todas las posibilidades existentes obtenemos los siguientes valores:

• 0 0 0: 0
• 0 0 1: 1
• 0 1 0: 2
• 0 1 1: 3
• 1 0 0: 4
• 1 0 1: 5
• 1 1 0: 6
• 1 1 1: 7


Es decir, esto es algo extrapolable tanto al usuario, grupo como a otros.

El formato del comando sería el siguiente:

chmod xxx archivo

Donde las x se cambiarán por un número en función de los permisos que se asigne.

Por ejemplo, si queremos dar permisos totales al propietario y dejar sin ningún permiso a los otros dos roles (grupo y otros), el comando sería:

chmod 700 archivo

Si queremos dar permisos de lectura y escritura a todos los roles entonces será:

chmod 666 archivo

Con estas dos formas tan sencillas podremos fijar los permisos de archivos y carpetas en nuestro equipo Linux. Además, tendremos al alcance de nuestra mano el comando ls -l para obtener la información en tiempo real de los ficheros y carpetas del sistema.

OTRAS OPCIONES DEL COMANDO «CHMOD»

Independientemente de si usamos la notación simbólica o la octal, los usuarios tendrán a su disposición una amplia lista de opciones en lo que se refiere a la asignación de los derechos de acceso a los archivos y diferentes directorios. Estos se insertan en la línea de comandos entre el comandó en sí y los permisos o modos. Estas opciones pueden ser:

• -R: Recursive. Este cambio de derechos se aplicará a todos los archivos y directorios dentro de una misma carpeta.

• -v: Verbose. Después de ejecutar un comando, se ejecutará un análisis de todos los archivos que se procesaron en la asignación.

• -c: Changes. Esta opción hace que se muestre un diagnóstico, pero solo para los archivos que sufrieron algún tipo de modificación.

• -f: Silent. Se silenciarán todos los mensajes de error.

Por ejemplo, aquí podemos ver un comando donde el cambio de los derechos, se hace de forma recursiva a los subdirectorios y archivos que se encuentran en una carpeta.

chmod -R 700 archivo

SUID, SGID Y PERSISTENCIA

Aparte de todos los permisos que hemos visto, existen otras tres opciones a considerar. Son SUID y SGID, los cuales están relacionados con los usuarios en el caso de SUID, con los grupos con SGID y los bits de permisos con persistencia. Para entender esto, debemos conocer el uso de passwd, el cual se utiliza para cambios de contraseña.

• SUID: En este caso en lugar de las «x» correspondientes nos encontramos con la «s» (suid). Esto se utiliza para poder utilizar el comando passwd por otros usuarios, y no solo por el usuario root. En este caso, el bit SUID obliga al archivo en cuestión a ejecutarse como si fuera el usuario propietario del mismo, y no como si se tratara del usuario propietario en cuestión. Por lo cual, da la posibilidad de ejecutar un comando sobre archivos en propiedad de otros usuarios.

• SGID: Su funcionamiento es igual al anterior, solo que en este caso el involucrado es el grupo al que corresponde el archivo. Si un usuario pertenece a un grupo, a la vez que existe un binario en otro grupo y este tiene el bit SGID activado, el usuario que se encuentra en el otro grupo puede ejecutar el comando. De igual forma, se muestra con una «s» en lugar de «x».

• Bit de persistencia: Se aplica a los directorios como pueden ser /tmp, y se establecen con una «t». Está orientado a directorios compartidos entre varios usuarios, donde solo el propietario puede eliminarlo. Por lo cual los demás usuarios sí van a poder ver el contenido y ejecutarlo, pero no podrán eliminarlo o realizar modificaciones. En el caso de no tener el bit de persistencia activado, podrían eliminarlo o modificarlo todos los usuarios.

Todo esto nos ayuda a generar permisos especiales, no limitados a los más comunes de lectura, escritura y ejecución. Estos son más precisos, y están muy enfocados a la seguridad de que estos no se pierdan o se modifiquen por error, lo cual puede suponer pérdida de información. En todo caso, lo más recomendable es establecer copias de seguridad.

Esta entrada fue publicada en Unix - Linux. Guarda el enlace permanente.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.