Cómo funcionan los permisos chmod: 755, 644 y sticky bit
En los sistemas de tipo Unix, chmod cambia los permisos de acceso de archivos y directorios. Los permisos de lectura, escritura y ejecución se establecen por separado para el propietario, el grupo y los demás usuarios. Los permisos de directorio tienen un significado propio: afectan a la enumeración de nombres, a la creación o eliminación de entradas y al acceso a una ruta conocida.
Modos numéricos y simbólicos
Un comando simbólico como chmod u+x script.sh concede al propietario permiso para ejecutar el archivo. En un modo numérico, la lectura vale 4, la escritura 2 y la ejecución 1. Así, 755 significa rwxr-xr-x: el propietario puede leer, escribir y ejecutar, mientras que el grupo y los demás pueden leer y ejecutar. El modo 644 suele ser adecuado para un archivo público normal, pero su idoneidad depende de la aplicación. No tome un número conocido por un ajuste de seguridad válido para todo.
Por qué importan los permisos de directorio
En un directorio, la lectura permite enumerar los nombres, la escritura permite modificar las entradas del directorio y la ejecución permite recorrer una ruta conocida. La eliminación de un archivo depende normalmente de los permisos de su directorio padre, no del permiso de escritura sobre el propio archivo. Por tanto, un archivo con 444 puede ser eliminado por alguien con acceso suficiente al directorio. El manual de GNU Coreutils explica esta distinción. Si el acceso falla aunque el archivo final parezca legible, revise cada directorio padre y la identidad con la que se ejecuta el servicio.
Un ejemplo de alojamiento web
Imagine un directorio de archivos HTML que un servidor web debe leer, pero que solo su propietario puede actualizar. Un punto de partida puede ser 755 para los directorios y 644 para los archivos normales. Aun así, debe tener en cuenta la cuenta del servicio, los grupos y las reglas del hosting; los archivos de configuración privados pueden necesitar un acceso más restringido. Poner todo a 777 para silenciar un error concede a los usuarios locales amplios derechos de modificación y puede introducir un problema de seguridad. Revise el propietario y los permisos actuales con stat y ls -l antes de cambiarlos.
Setuid, setgid y el sticky bit
Si se antepone un cuarto dígito octal, este indica los bits especiales: 4 para setuid, 2 para setgid y 1 para sticky. Por ejemplo, 4755 activa setuid en un ejecutable; 455 no lo hace. Setuid debe utilizarse con cuidado, porque los fallos del programa pueden ejecutarse con los privilegios del propietario. En los directorios, setgid puede hacer que las nuevas entradas hereden el grupo del directorio. Un sticky bit en un directorio compartido, como /tmp, restringe quién puede eliminar o renombrar los archivos de otro usuario. Antes de usar chmod -R, revise el árbol exacto: los archivos normales, los ejecutables y los directorios rara vez necesitan todos los mismos modos.