SCM_RIGHTS es una opción de control de mensaje (control message option) utilizada con Unix Domain Sockets (UDS) que permite a un proceso enviar uno o más descriptores de archivo (file descriptors) a otro proceso. A diferencia de la herencia de descriptores en un fork, SCM_RIGHTS permite la transferencia explícita y segura de descriptores entre procesos que pueden no tener una relación padre-hijo, incluso a través de límites de usuario o grupos si los permisos subyacentes lo permiten. El descriptor de archivo transferido mantiene su estado (offset, flags, etc.) y se convierte en un descriptor válido en el proceso receptor, apuntando al mismo objeto del kernel (archivo, socket, pipe, etc.) que el descriptor original.

En el mundo real, SCM_RIGHTS es fundamental para la construcción de arquitecturas de seguridad y delegación de privilegios. Por ejemplo, systemd lo utiliza para pasar descriptores de sockets a servicios que se inician bajo usuarios con menos privilegios, permitiéndoles escuchar en puertos privilegiados sin necesidad de ejecutarse como root. Servidores de aplicaciones como Nginx o Apache pueden usarlo para que un proceso maestro (privilegiado) abra puertos y luego pase los descriptores a procesos worker (no privilegiados) para manejar las conexiones. También es común en sistemas de contenedores y sandboxing, donde un proceso supervisor puede delegar acceso a recursos específicos del host a un proceso dentro de un contenedor o sandbox de forma controlada.

Para un arquitecto, SCM_RIGHTS es una herramienta poderosa para diseñar sistemas con el principio de mínimo privilegio (Principle of Least Privilege). Permite desacoplar la apertura de recursos privilegiados de su uso, mejorando la postura de seguridad de una aplicación al reducir la superficie de ataque. Los trade-offs incluyen la complejidad inherente de la comunicación entre procesos y la gestión de descriptores. Es crucial asegurar que el proceso receptor sea de confianza y que la lógica de transferencia maneje correctamente los errores y la revocación de acceso. Su uso es preferible a la elevación temporal de privilegios o a la ejecución completa de un servicio como root, ya que proporciona un control granular sobre qué recursos se comparten y con quién, facilitando la auditoría y el aislamiento de fallos.