Conceptos de permisos y propiedad en Linux

Permisos de Linux

En Linux, los usuarios y grupos son el primer mecanismo para controlar el acceso a archivos, directorios y otros recursos del sistema. Como punto de partida, la persona a cargo debe saber cómo añadir, editar, suspender o eliminar cuentas de usuario y grupos. Debido a que estas tareas requieren privilegios administrativos, conocer los conceptos de permisos y propiedad en Linux te permitirá llevarlas a cabo.

Permisos de Linux: Requisitos previos

Para seguir este artículo, necesitarás un servidor Ubuntu 20.04 con un usuario que tenga acceso a sudo como explicamos anteriormente.

Crear usuarios y grupos

Para crear un nuevo usuario llamado juan, usa el siguiente comando:

sudo adduser juan

Esta operación, además de generar la cuenta, también copia las plantillas .bash_logout, .bashrc y .profile desde /etc/skel al directorio personal de juan. También agrega un grupo con el mismo nombre. La herramienta id devuelve los identificadores de grupos a los que pertenece el usuario en cuestión.

ls -la /etc/skel
ls -la /home/juan
id juan
conceptos sobre permisos y propiedad en linux 1
Permisos de Linux

Los grupos adquieren mayor importancia cuando reúnen un conjunto de usuarios. De esta forma, el administrador puede otorgarles el mismo tipo de acceso a ciertos recursos para todos sus miembros.

La creación de nuevos grupos se hace con groupadd, mientras que usermod con la opción combinada -aG (--append --groups) agrega usuarios a este. Como ejemplo, veamos cómo sumar a juan al grupo finanzas:

sudo groupadd finanzas
sudo usermod -aG finanzas juan
id juan
conceptos sobre permisos y propiedad en linux 2
Permisos de Linux

Como observas en la imagen de arriba, ahora juan está en el grupo finanzas aparte de los que ya tenía anteriormente.

Además de agregar usuarios a grupos suplementarios, usermod tiene otros usos:

  • La opción --home seguida de una ruta absoluta establece esa carpeta como nuevo directorio personal para el usuario.
  • --shell cambia el intérprete de comandos de la cuenta.
  • Para configurar el vencimiento se emplea --expiredate con una fecha en el formato YYYY-MM-DD.

Por ejemplo, cambia el directorio personal de juan a /tmp, su shell por defecto a /bin/sh y haz que la cuenta expire el 30 de septiembre de 2022:

sudo usermod --shell /bin/sh --home /tmp --expiredate 2022-09-30 juan

Con sudo chage -l podrás observar la fecha de caducidad de la cuenta:

conceptos sobre permisos y propiedad en linux 4
Permisos de Linux

Por otro lado, la línea del usuario en /etc/passwd muestra /bin/sh como intérprete de comandos y /tmp como su directorio personal:

grep juan /etc/passwd
conceptos sobre permisos y propiedad en linux 5
Permisos de Linux

El man page de usermod detalla el resto de las posibilidades que ofrece esta utilidad,

Permisos y propiedad

Para comenzar, consideremos el resultado de ls -l. La cantidad de archivos y directorios será diferente en tu caso, por lo que emplearemos la imagen de abajo como referencia:

permisos de linux
Permisos de Linux

El primer carácter de cada línea indica el tipo de objeto (primera columna resaltada en la imagen inferior):

  • - representa un archivo normal.
  • d indica que el objeto es un directorio.
  • l representa un enlace simbólico (un enlace, o acceso directo, a otro recurso).

Aparte de estos tipos, en directorios como /dev encontrarás b y c (dispositivos de bloques y de caracteres, respectivamente).

Los siguientes nueve caracteres de los atributos del archivo representan el modo de este. Los tres primeros caracteres de este grupo indican los permisos del propietario del archivo. La próxima terna es la información del grupo propietario, mientras que la última corresponde al resto de los usuarios del sistema. Tomemos docker-compose.yml para ilustrar:

  • Se trata de un archivo (en base al caracter – al comienzo de la línea).
  • El dueño del archivo (gabriel) tiene permisos de lectura (r) y escritura (w), al igual que los miembros del grupo con el mismo nombre. El resto de los usuarios solamente podrán acceder en modo lectura.

La forma más sencilla de cambiar el modo de un archivo es utilizando el comando chmod seguido de una expresión que indique los derechos del propietario con la letra u, los derechos del propietario del grupo con la letra g, y el resto con o. Los permisos se conceden (o revocan) con los signos + o – de la siguiente forma.

sudo chmod o-r docker-compose.yml # Quitar acceso de lectura del resto de los usuarios
sudo chmod g+x docker-compose.yml # Agregar permiso de ejecución al grupo

Asimismo, la propiedad del archivo y del grupo se cambia con los comandos chown y chgrp:

sudo chown root docker-compose.yml # El nuevo dueño del archivo será root...
sudo chgrp juan docker-compose.yml # ...mientras que el grupo propietario será juan
conceptos sobre permisos y propiedad en linux 6
Permisos de Linux

En el último comando de arriba apreciamos el resultado de los cambios que efectuamos.

Eliminar usuarios y grupos

De la misma forma en que creaste usuarios y grupos, también puedes eliminarlos. Antes de hacerlo, hay que tomar en consideración qué debería suceder con los recursos de su propiedad. ¿Es necesarios transferir archivos y directorios a otro usuario? ¿Necesitas cambiar el dueño a otro grupo? ¿Realmente precisas borrar la cuenta o basta con suspenderla temporariamente? Una vez que tienes la respuesta a esas preguntas, puedes proceder como indicamos a continuación:

Para solamente impedir que un usuario inicie sesión en el VPS, puedes cambiar la shell por defecto a /usr/sbin/nologin:

sudo usermod --shell /usr/sbin/nologin juan

Luego de hacer este cambio, juan no podrá iniciar sesión:

conceptos sobre permisos y propiedad en linux 7
Permisos de Linux

A fin de restaurar el acceso, utiliza el mismo comando que antes pero reemplazando /usr/sbin/nologin con /bin/bash.

En caso de que sea preciso eliminar el usuario juan y el grupo finanzas, haz lo siguiente:

sudo deluser --backup --remove-home juan
sudo delgroup finanzas

La opción --backup es útil si no tienes definido qué debe pasar con los archivos de la cuenta. Es mejor guardarlos de todas maneras en caso de que surja la necesidad en el futuro.

conceptos sobre permisos y propiedad en linux 8
Permisos de Linux

Como muestra la imagen de arriba, al eliminar el usuario realizamos una copia de respaldo de sus archivos en juan.tar.bz2.

Conclusión

En esta guía aprendiste a llevar a cabo las operaciones más típicas en la administración del sistema. Estas incluyen la creación, modificación y borrado de usuarios y grupos, junto con el cambio de permisos y propiedad de archivos y directorios. Los man pages de cada comando que explicamos explican más en detalle la variedad de opciones disponibles en cada uno. Puedes consultarlos utilizando la herramienta man desde la línea de comandos o en varios recursos en línea, como por ejemplo Debian Manpages.

Gabriel Cánepa
Gabriel Cánepa

Gabriel trabaja actualmente como desarrollador full-stack en Scalar, una firma que se dedica a hacer valuaciones de empresas. Es Administrador de Sistemas certificado por la Fundación Linux y previamente ha escrito un gran número de artículos y contenidos técnicos sobre el tema para: DigitalOcean, Linode, Carrera Linux Argentina y Tecmint.

Tiene una certificación en programación de la Universidad de Brigham Young-Idaho, y está completando las carreras de programador y analista de sistemas en la Universidad Nacional de Villa Mercedes (UNViMe).

En su tiempo libre, Gabriel disfruta leyendo libros de Stephen R. Covey, tocando piano y guitarra, y enseñando conocimientos de programación a su dos hijas.