Pixelaula.
Shell y archivos · Lección 4 de 5

Quién puede qué

Cada archivo tiene dueño, grupo y nueve permisos. Al terminar sabrás leerlos de un vistazo y compartir un archivo solo con quien debe verlo.

⏱ 25–35 min▶ Video de 85 s🧪 Laboratorio con 4 misiones
00 · En 85 segundos

Primero, la idea completa

Mira el video entero o salta a la parte que quieras repasar. Después, cada idea tiene su propia escena para tocarla.

    01 · Muchos usuarios, una máquina

    Recursos y propiedad

    En un sistema multiusuario hay que responder tres preguntas: qué permisos tengo sobre cada recurso, cómo se relacionan usuarios, archivos y procesos, y cómo se administran esos permisos. Controlar el acceso es una parte vital del sistema.

    • Linux es multiusuario, como Unix. Cada cuenta se identifica con un número, el UID.
    • Los recursos, los archivos, pertenecen a un usuario: normalmente a quien los creó.
    • Una persona entra con su cuenta y lanza procesos. Los procesos usan archivos para guardar datos y para comunicarse, así que los usuarios usan los archivos de forma indirecta, a través de un proceso que corre con su identidad.

    Hay dos enfoques de control de acceso. El discrecional bloquea el acceso según la identidad del usuario, y es discrecional porque quien tiene permiso puede dárselo a otro: es el más común y el que usa Linux con sus permisos de archivo. El mandatorio se basa en niveles de seguridad: cada usuario tiene un nivel de autorización y cada recurso una etiqueta, y solo se accede a lo de nivel igual o inferior; lo administra un responsable y los usuarios no pueden cambiar sus permisos.

    02 · Quién es quién

    Usuarios y grupos

    Hay dos tipos de usuario: los del sistema, que usan los programas para correr procesos en segundo plano (como mysql o apache), y los regulares, personas que usan Linux desde una shell. Cada usuario tiene un UID y pertenece a uno o más grupos, identificados por un GID. El usuario especial con UID 0 se llama root y puede hacer cualquier cosa. Por convención, en systemd:

    0root
    1 a 999reservados para usuarios del sistema
    65534nobody, usado sobre todo al mapear sistemas de archivos de red
    1000 a 65533 y 65536 a 4294967294usuarios regulares

    Tu UID lo da la orden id. Por defecto los usuarios se manejan localmente: su información vive en archivos de la propia máquina, como /etc/passwd, /etc/shadow (las contraseñas cifradas) y /etc/group.

    Escena 1

    Una línea de /etc/passwd por usuario. Elige una y toca cada campo.

    Para administrarlos: adduser crea usuarios (con -r, o --system, un usuario del sistema), passwd fija la contraseña, usermod cambia la configuración de un usuario (por ejemplo, usermod -aG dev luis lo agrega al grupo dev), groupadd crea grupos y gpasswd configura un grupo. Al crear un usuario se crea por defecto un grupo con su mismo nombre.

    En empresas con muchas computadoras es común centralizar los usuarios: con directorios basados en LDAP (como Keycloak o Microsoft Active Directory), con autenticación por red usando Kerberos, o con herramientas de gestión de configuración como Puppet, Ansible o Chef, que crean los usuarios en muchas máquinas a la vez.

    03 · Todo es un archivo

    Permisos

    Como en Linux todo es un archivo, los permisos de archivo son el corazón del control de acceso. Hay tres ámbitos, de menor a mayor: el usuario dueño del archivo, su grupo y los otros, todos los demás. Para cada uno hay tres tipos de acceso:

    En un archivoEn un directorio
    r · leerver el contenidover los nombres de los archivos que contiene
    w · escribirmodificarlo o borrarlocrear, renombrar y borrar archivos dentro
    x · ejecutarejecutarlo, si además se puede leerentrar y acceder a la información de sus archivos

    Además hay bits especiales: setuid y setgid (s), en ejecutables, hacen que quien lo ejecuta herede los permisos del dueño o del grupo del archivo, como /usr/bin/passwd, que debe escribir en /etc/shadow. El sticky bit (t), en directorios como /tmp, impide que alguien que no es root borre archivos que no son suyos, aunque el directorio sea escribible por todos.

    Escena 2

    informe.txt es de ana y del grupo dev. sofía está en dev; luis no. Enciende y apaga los nueve permisos y mira qué puede hacer cada quien.

    04 · Leer ls -l

    El modo de un archivo

    Una línea de ls -l como -rw-r--r-- 1 mh9 devs 9 abr 12 11:42 test tiene, de izquierda a derecha: el modo del archivo, el número de enlaces duros, el dueño, el grupo, el tamaño en bytes, la fecha de modificación y el nombre.

    El modo tiene diez caracteres: el primero es el tipo de archivo y luego vienen tres grupos rwx, del dueño, del grupo y de los otros. Los tipos:

    -archivo regular, como el que crea touch abc
    d · ldirectorio · enlace simbólico
    b · cdispositivo especial de bloques · de caracteres
    Carchivo de alto rendimiento (datos contiguos)
    p · stubería con nombre (se crea con mkfifo) · socket
    ?otro tipo desconocido

    Cada grupo rwx se puede escribir como un número de 0 a 7, sumando r = 4, w = 2 y x = 1. Así rw-r--r-- es 644, y con chmod +x pasa a rwxr-xr-x, 755. Más ejemplos: 700, todo para el dueño y nada para los demás; 400, solo lectura para el dueño. Los permisos se cambian con chmod (por ejemplo chmod 744 archivo o chmod g+w archivo), y el dueño y el grupo con chown.

    Escena 3

    En un directorio, r, w y x significan otra cosa. luis es «otro» en la carpeta proyecto: cambia sus permisos y mira qué logra hacer.

    05 · Predice

    Antes de leer la respuesta

    Laboratorio

    Tu turno: comparte con el equipo

    Eres ana, que pertenece a los grupos sudo y dev. Averigua tu identidad, comparte un informe solo con tu equipo (y compruébalo entrando como sofía y como luis), crea un usuario para un servicio y descubre qué hace el sticky bit de /tmp.

    Repaso

    Comprueba lo que entendiste

    Cada respuesta incorrecta explica por qué parece correcta y en qué falla.