Skip to content

6. Usuarios, grupos y permisos

En Linux los procesos se ejecutan asociados a una identidad de usuario y a grupos

Usuario
│
▼
Proceso
│
▼
Permisos efectivos
│
▼
Acceso a archivos y recursos

Los permisos ayudan a controlar qué acciones puede realizar cada identidad

Terminal window
whoami

Ejemplo

ana

Para consultar el identificador numérico y los grupos

Terminal window
id

Ejemplo ilustrativo

uid=1000(ana) gid=1000(ana) groups=1000(ana),27(sudo)

Los números y grupos varían según el sistema

Un grupo permite asignar permisos compartidos a varios usuarios

Grupo: desarrollo
├── ana
├── luis
└── carlos

Un archivo puede pertenecer a un usuario y a un grupo

Los permisos pueden diferenciar entre el propietario el grupo y los demás usuarios

Terminal window
ls -l

Salida ilustrativa

-rwxr-x--- 1 ana desarrollo 2048 oct 22 10:00 script.sh

Descomposición

-rwxr-x---
│ │ │ │
│ │ │ └── Otros usuarios
│ │ └───── Grupo
│ └───────── Propietario
└─────────── Tipo de archivo

En la salida de ls -l el primer carácter representa el tipo de elemento

SímboloSignificado
-Archivo regular
dDirectorio
lEnlace simbólico

Después aparecen los permisos del propietario del grupo y de los demás usuarios

SímboloPermisoEn archivosEn directorios
rLecturaLeer el contenidoListar nombres
wEscrituraModificar contenidoCrear o eliminar entradas sujeto a otros permisos
xEjecuciónEjecutar el archivo si es ejecutableAcceder o atravesar el directorio

El significado práctico depende del tipo de elemento y de los demás controles de acceso

-rwxr-x---
rwx r-x ---
│ │ │
│ │ └── Otros usuarios
│ └─────── Grupo
└──────────── Propietario

Para este ejemplo

  • El propietario puede leer escribir y ejecutar
  • Los miembros del grupo pueden leer y ejecutar
  • Los demás no tienen permisos básicos

Los permisos también pueden representarse mediante números

Cada permiso tiene un valor

PermisoValor
Lectura r4
Escritura w2
Ejecución x1
Sin permiso0

Se suman los valores de los permisos que se desean conceder

Porque utiliza ocho valores posibles del cero al siete para representar cada grupo de permisos

rwx = 4 + 2 + 1 = 7
rw- = 4 + 2 + 0 = 6
r-x = 4 + 0 + 1 = 5
r-- = 4 + 0 + 0 = 4

Ejemplos adicionales

-wx = 2 + 1 = 3
-w- = 2
--x = 1
--- = 0
NúmeroPermisosInterpretación
7rwxLectura escritura ejecución
6rw-Lectura y escritura
5r-xLectura y ejecución
4r--Solo lectura
3-wxEscritura y ejecución
2-w-Solo escritura
1--xSolo ejecución
0---Ningún permiso
Terminal window
chmod 750 script.sh

Se divide en tres dígitos

7 5 0
│ │ │
│ │ └── Otros
│ └───── Grupo
└──────── Propietario

Por tanto

750 = rwx r-x ---

El propietario puede leer escribir y ejecutar

El grupo puede leer y ejecutar

Los demás no tienen permisos básicos

Terminal window
chmod 644 documento.txt
644 = rw- r-- r--

El propietario puede leer y modificar

El grupo y los demás pueden leer

Terminal window
chmod 600 archivo.conf
600 = rw- --- ---

Solo el propietario tiene lectura y escritura según estos permisos básicos

Permisos típicos para archivos y directorios

Section titled “Permisos típicos para archivos y directorios”
Terminal window
chmod 755 script.sh

Permite al propietario leer escribir y ejecutar y al grupo y demás leer y ejecutar

Terminal window
chmod 640 configuracion.conf

El propietario puede leer y escribir y el grupo puede leer

Terminal window
chmod 700 ~/.ssh

Restringe el acceso básico al directorio al propietario

Los permisos adecuados dependen del contenido y de los requisitos de la aplicación

Terminal window
chmod 777 archivo

Significa

rwx rwx rwx

El propietario el grupo y los demás reciben lectura escritura y ejecución

Esto suele conceder más permisos de los necesarios y puede permitir modificaciones no deseadas

Un directorio necesita permisos adecuados para las operaciones que se quieren realizar

  • r permite listar nombres
  • w permite crear o eliminar entradas sujeto a las demás condiciones
  • x permite atravesar el directorio y acceder a elementos conocidos

Un directorio sin permiso x puede impedir el acceso a sus archivos aunque estos tengan permisos de lectura

chmod cambia permisos

chown cambia propietario o grupo de un archivo

Terminal window
sudo chown ana:desarrollo archivo.txt

Significa asignar

Propietario: ana
Grupo: desarrollo

La operación puede requerir privilegios administrativos

En Linux el nombre del usuario y el nombre del grupo deben existir para poder asignarlos

sudo permite ejecutar un comando con los privilegios autorizados por la política del sistema

Ejemplo

Terminal window
sudo systemctl status docker

Consulta el estado del servicio Docker en sistemas que utilizan systemd y tienen ese servicio configurado

No todos los sistemas operativos ni todos los entornos utilizan systemctl

En Debian y Ubuntu puede utilizarse

Terminal window
sudo adduser ana

El comando guía al administrador para crear la cuenta y completar datos solicitados

Para consultar los grupos del usuario

Terminal window
id ana

Para consultar los grupos a los que pertenece el usuario actual

Terminal window
groups

Los comandos exactos para crear usuarios pueden variar según la distribución

En algunas instalaciones de Docker Engine para Linux existe un grupo llamado docker

Terminal window
getent group docker

Un administrador puede agregar un usuario con

Terminal window
sudo usermod -aG docker ana

El usuario normalmente debe iniciar una nueva sesión para que se actualicen sus grupos efectivos

Importante: pertenecer al grupo docker concede capacidades muy elevadas sobre el host y puede equivaler en la práctica a privilegios de administrador

No agregues usuarios a este grupo sin evaluar las implicaciones de seguridad

¿Los permisos funcionan igual dentro de un contenedor?

Section titled “¿Los permisos funcionan igual dentro de un contenedor?”

No siempre

Debemos distinguir

Permisos del host
│
▼
Montajes y volúmenes
│
▼
Identidad del proceso
│
▼
Permisos dentro del contenedor

Los UID y GID las opciones de montaje y el modo de ejecución pueden afectar el acceso

Un archivo que funciona en una computadora puede generar errores de permisos en otro entorno

Ahora entendemos mejor el entorno

Terminal window
docker run --rm alpine:3.22 echo "Hola desde un contenedor"

Ejemplo de salida ilustrativa

Hola desde un contenedor

Docker puede descargar la imagen si no existe localmente

Después crea el contenedor ejecuta el comando y elimina el contenedor cuando termina

La imagen puede permanecer almacenada

Terminal window
docker run --rm -it alpine:3.22 sh

Dentro del contenedor puedes probar

Terminal window
pwd
ls -lah
id
cat /etc/os-release

Alpine utiliza una distribución Linux ligera

Por eso no debes asumir que incluye todas las herramientas que encontrarías en una distribución de escritorio o servidor

Docker CLI
│
▼
Imagen Alpine
│
▼
Contenedor
│
▼
Proceso sh

El contenedor no necesita iniciar una computadora completa con escritorio

Ejecuta el proceso configurado en un entorno aislado

Continúa con 7. Arquitectura de Docker.