Sistema de permisos de archivos y directorios en Unix y Linux

Fuentes: Unix and Linux File and Directory Permission System

Los sistemas operativos Unix y Linux, así como macOS, utilizan un mecanismo de control de acceso basado en el estándar POSIX.1:2008 (Single Unix Specification). Este sistema asigna a cada archivo y directorio un propietario y un grupo, definiendo tres categorías de usuarios: propietario, grupo y otros. Para cada categoría, se pueden establecer tres tipos de permisos: lectura, escritura y ejecución, lo que genera una combinación de nueve bits de permiso.

La distinción clave radica en que los permisos de los directorios no se heredan por defecto a los archivos que contienen. Para acceder a un archivo, el usuario necesita permisos de lectura en el archivo y permisos de búsqueda (ejecución) en todos los directorios anidados para localizar su inode. Por el contrario, para modificar o eliminar un archivo dentro de un directorio, se requieren permisos de escritura en el directorio, aunque no en el archivo específico.

El sistema opera a nivel de llamadas al sistema (system calls). Por ejemplo, la función read() requiere permisos de lectura, mientras que write() necesita permisos de escritura y exec() requiere permisos de ejecución. El sistema mantiene 12 bits de permiso en el inode de cada archivo, permitiendo configuraciones específicas. Además, existen atributos adicionales como el bit SUID (Set User ID), SGID (Set Group ID) y el bit sticky, que modifican el comportamiento de ejecución y acceso. El usuario propietario puede cambiar los permisos sin necesidad de permisos adicionales, pero solo el usuario root puede modificar el propietario del archivo. Esta arquitectura garantiza la seguridad del sistema al restringir el acceso a recursos críticos.