Grupos de usuarios y permisos de archivos en Linux

LinuxLinuxBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

Linux es un sistema operativo multiusuario. Esto significa que múltiples usuarios pueden utilizar la misma computadora Linux simultáneamente, cada uno con su propio espacio privado y archivos, mientras también comparten algunos recursos del sistema. Este laboratorio (lab) te introducirá en los conceptos básicos de la gestión de usuarios y los permisos de archivos en Linux, conceptos que son cruciales para la administración del sistema y la seguridad.

Ver información del usuario actual

En Linux, cada usuario tiene un nombre de usuario único. Comencemos identificando como qué usuario estamos actualmente conectados.

Abre la terminal y escribe el siguiente comando:

whoami

El comando whoami es una herramienta sencilla que muestra el nombre de usuario del usuario actual.

Deberías ver una salida similar a esta:

labex:project/ $ whoami
labex

Esto indica que actualmente estás conectado como el usuario "labex".

Crear un nuevo usuario

Ahora, creemos un nuevo usuario. En Linux, crear nuevos usuarios requiere privilegios de administrador. Usaremos el comando sudo para obtener estos privilegios.

sudo significa "Superuser Do" (Ejecutar como superusuario). Permite a los usuarios normales ejecutar comandos como el superusuario (o usuario root).

Antes de crear un nuevo usuario, discutamos el concepto de grupos primarios. En Linux, cada usuario pertenece a un grupo primario y puede pertenecer a múltiples grupos secundarios. El grupo primario se utiliza típicamente como el propietario del grupo de los archivos que el usuario crea.

Cuando creas un nuevo usuario con adduser, automáticamente crea un grupo primario para ese usuario con el mismo nombre que el nombre de usuario. Esto se llama esquema de Grupo Privado de Usuario (User Private Group, UPG).

Ingresa el siguiente comando para crear un nuevo usuario llamado "jack":

sudo adduser jack

Este comando hará lo siguiente:

  1. Creará un nuevo usuario llamado "jack".
  2. Creará un nuevo grupo llamado "jack" (el grupo primario).
  3. Agregará al usuario "jack" al grupo "jack" como su grupo primario.
  4. Creará un directorio de inicio para jack en /home/jack.

Se te pedirá que establezcas una contraseña para jack y proporciones alguna información adicional. Puedes establecer una contraseña simple (como "password") y presionar Enter para usar los valores predeterminados para la otra información.

Después de crear el usuario, confirmemos que se creó un directorio de inicio para jack y verifiquemos el grupo primario de jack:

ls /home
id jack

El comando id mostrará el ID de usuario (UID) de jack, el ID de grupo primario (GID) y cualquier grupo secundario.

Explorar grupos de usuarios

En Linux, los grupos de usuarios son una forma de organizar a múltiples usuarios para la gestión de permisos. Cada usuario tiene un grupo primario y puede pertenecer a múltiples grupos secundarios. Exploremos los grupos a los que pertenece nuestro usuario actual:

id labex

Deberías ver una salida similar a:

uid=5000(labex) gid=5000(labex) groups=5000(labex),27(sudo),121(ssl-cert),5002(public)

Esto muestra que:

  • El usuario labex tiene un ID de usuario (UID) de 5000.
  • El grupo primario de labex también se llama labex con un ID de grupo (GID) de 5000.
  • labex pertenece a varios grupos secundarios, incluyendo sudo, ssl-cert y public.

Ahora, veamos todos los grupos en el sistema:

cat /etc/group | sort

El comando cat muestra el contenido de un archivo, /etc/group es donde se almacena la información de los grupos y | sort ordena la salida alfabéticamente.

Para ver solo los grupos relacionados con labex, utiliza:

cat /etc/group | grep -E "labex"

grep es una poderosa herramienta de búsqueda. Este comando busca líneas que contengan "labex" en el archivo de grupos.

Crear un nuevo grupo y agregar un usuario a él

Creemos un nuevo grupo llamado "developers" y agreguemos nuestro nuevo usuario "jack" a este grupo:

Primero, creemos el nuevo grupo:

sudo groupadd developers

Ahora, agreguemos a jack al grupo developers:

sudo usermod -aG developers jack

El comando usermod modifica las cuentas de usuario. La opción -aG agrega al usuario a un grupo suplementario.

Para verificar que jack ahora es miembro del grupo developers, utiliza:

groups jack

Deberías ver "developers" enumerado entre los grupos de jack.

Agregar un usuario al grupo sudo

Ahora que hemos creado el usuario jack, démosle privilegios de sudo agregándolo al grupo sudo. Pero primero, entendamos por qué esto es importante:

Agregar un usuario al grupo sudo les permite ejecutar comandos con privilegios de superusuario o root. Esto es útil por varias razones:

  1. Seguridad: Permite al usuario realizar tareas administrativas sin iniciar sesión como el usuario root, lo cual generalmente se considera un riesgo de seguridad.
  2. Rendición de cuentas: Cuando los usuarios utilizan sudo, sus acciones se registran, lo que proporciona un registro de auditoría de las acciones administrativas.
  3. Conveniencia: Elimina la necesidad de cambiar a la cuenta de usuario root para tareas administrativas ocasionales.
  4. Control granular: La configuración de sudo se puede personalizar para permitir que usuarios específicos ejecuten solo ciertos comandos con privilegios elevados.

Para agregar a jack al grupo sudo, utiliza este comando:

sudo usermod -aG sudo jack

Este comando utiliza usermod para modificar la cuenta de usuario. La opción -aG significa "agregar al grupo", por lo que agrega a jack al grupo sudo sin eliminarlo de otros grupos.

Después de agregar a jack al grupo sudo, puedes verificar su pertenencia a grupos con:

sudo groups jack

Deberías ver sudo enumerado entre los grupos de jack.

Al agregar a jack al grupo sudo, le hemos dado la capacidad de realizar tareas administrativas en el sistema. Sin embargo, es importante recordar que con gran poder viene gran responsabilidad. Los usuarios con privilegios de sudo deben ser de confianza y entender las implicaciones de sus acciones, ya que pueden afectar potencialmente a todo el sistema.

Comprender y manipular permisos y propietarios de archivos

En Linux, los permisos y el propietario de los archivos son cruciales para la seguridad del sistema. Exploremos estos conceptos y aprendamos cómo manipularlos.

  1. Primero, examinemos los permisos actuales en el directorio /home:
ls -l /home

Verás una salida similar a:

total 8
drwxr-xr-x 2 jack  jack  4096 Jul 30 10:00 jack
drwxr-xr-x 5 labex labex 4096 Jul 30 09:55 labex

Desglosemos lo que significa esto:

  • El primer carácter indica el tipo de archivo (d para directorio, - para archivo regular).
  • Los siguientes 9 caracteres representan los permisos para el propietario, el grupo y otros (en ese orden).
  • r significa permiso de lectura, w significa permiso de escritura y x significa permiso de ejecución.
  • El nombre de usuario después de estos caracteres es el propietario del archivo, seguido del grupo propietario.
  1. Ahora, creemos un nuevo archivo y cambiemos su propietario:
touch /home/labex/testfile
ls -l /home/labex/testfile
sudo chown jack:jack /home/labex/testfile
ls -l /home/labex/testfile

El comando touch crea un archivo vacío. Inicialmente, el archivo será propiedad de labex. Luego usamos chown para cambiar el propietario a jack tanto para el usuario como para el grupo.

¿Por qué cambiar el propietario? En Linux, los propietarios de archivos tienen privilegios especiales sobre sus archivos. Al cambiar el propietario, estamos dando a jack control total sobre este archivo.

  1. Finalmente, modifiquemos los permisos del archivo:
sudo chmod 750 /home/labex/testfile
ls -l /home/labex/testfile

El comando chmod cambia los permisos del archivo. El número 750 es una forma abreviada de establecer permisos:

  • 7 (propietario): Lectura (4) + Escritura (2) + Ejecución (1) = 7
  • 5 (grupo): Lectura (4) + Ejecución (1) = 5
  • 0 (otros): Sin permisos

Este conjunto de permisos significa:

  • El propietario (jack) puede leer, escribir y ejecutar el archivo.
  • Los miembros del grupo jack pueden leer y ejecutar el archivo.
  • Otros no tienen permisos sobre el archivo.

¿Por qué establecer estos permisos? Este es un conjunto de permisos común que permite al propietario acceso completo, da acceso limitado al grupo y restringe el acceso para todos los demás. Es un equilibrio entre usabilidad y seguridad.

Comprender los permisos y el propietario de los archivos es crucial en Linux. Te permite controlar quién puede leer, modificar o ejecutar archivos, lo cual es fundamental para la seguridad del sistema y la privacidad de los usuarios. A medida que sigas trabajando con Linux, encontrarás que usas con frecuencia estos comandos para gestionar el acceso a archivos y directorios.

Resumen

¡Felicidades! Has completado el laboratorio de Grupos de Usuarios y Permisos de Archivos en Linux. Has aprendido cómo:

  1. Ver información de usuarios
  2. Crear nuevos usuarios y entender los grupos primarios
  3. Explorar y modificar grupos de usuarios
  4. Crear nuevos grupos y agregar usuarios a ellos
  5. Conceder privilegios de sudo a usuarios
  6. Ver y entender los permisos de archivos
  7. Cambiar el propietario de archivos
  8. Modificar los permisos de archivos

Estas habilidades son fundamentales para gestionar usuarios y proteger archivos en un entorno Linux. A medida que continúes tu viaje en Linux, encontrarás que estos conceptos son esenciales para la administración y seguridad del sistema.