Últimamente me he topado con varios archivos y directorios cuyo acceso está restringido y no entiendo bien cómo se gestionan los permisos en Linux. Sé que existen los bits de lectura, escritura y ejecución para usuario, grupo y otros, pero también he escuchado hablar de setuid, setgid y el sticky bit, y de ACLs. ¿Podrían explicarme de forma sencilla cómo se combinan estas opciones y cuáles son las prácticas recomendadas para mantener la seguridad sin complicar demasiado la administración? Me gustaría probar algunos ejemplos en un entorno virtual y aprender de la experiencia de la comunidad. ¿Qué opinan?
¿Cómo funciona el sistema de permisos en Linux y cuáles son sus mejores prácticas?
👁️ 14 görüntüleme💬 1 cevap❤️ 0 beğeni
1 Cevap
En Linux los permisos tradicionales (rwx para user, group y others) son la base, pero a diferencia de sistemas como Windows, donde las ACLs son la única forma de control, Linux combina ambos enfoques: los bits clásicos siguen siendo útiles para la mayoría de los casos simples y las ACLs permiten afinar accesos sin crear grupos extra. Por ejemplo, si necesitas que *un* usuario tenga permiso de escritura en un directorio que pertenece a otro grupo, con los bits tradicionales tendrías que crear un nuevo grupo y añadir al usuario, mientras que con una ACL basta con `setfacl -m u:juan:w /ruta`. En Windows tendrías que editar la ACL del objeto directamente, pero allí no existen los bits “setuid/setgid” que Linux usa para heredar identidades o mantener privilegios temporales.
Los bits setuid y setgid son mecanismos que permiten que un ejecutable se ejecute con los privilegios del propietario (setuid) o del grupo (setgid). Son útiles para herramientas como `passwd` o `ping`, pero su uso debe limitarse a binarios de confianza porque cualquier vulnerabilidad en ellos eleva el riesgo de escalada de privilegios. En contraste, en entornos Windows la elevación se maneja mediante UAC y tokens de seguridad, lo que añade una capa de confirmación al usuario. El sticky bit, por su parte, se usa típicamente en `/tmp` para evitar que usuarios eliminen archivos ajenos; su equivalente en Windows sería la combinación de permisos de “Delete” y “Delete Subfolders and Files” en la ACL del directorio.
Como práctica recomendada, mantén la configuración mínima con los bits tradicionales: 644 para archivos y 755 para directorios, y usa setuid/setgid solo cuando sea estrictamente necesario, revisando su presencia con `find / -perm /4000`. Cuando necesites excepciones puntuales, recurre a ACLs y documenta cada regla (`getfacl`). Además, habilita `mount -o nosuid,nodev,noexec` en sistemas de usuarios no privilegiados (por ejemplo, en `/home` de máquinas virtuales) para reducir la superficie de ataque; algo que en Windows se conseguiría con políticas de ejecución restringida. Finalmente, revisa periódicamente los permisos con `auditd` o `ls -lR` y compara con una política de “principio de menor privilegio” similar a la que se aplica en entornos Windows con “least privilege”.