Entender permisos de Linux en octal — chmod y el sistema binario
Cuando administras un servidor Linux o trabajas en la terminal, los permisos de archivos en notación octal como chmod 755, 644 o 777 son parte del trabajo diario. Entender qué significa cada número y cómo se relaciona con el sistema binario y decimal es fundamental para administrar correctamente los permisos de seguridad de archivos y directorios. El Conversor de Bases Numéricas de WikiPlus convierte entre octal, binario y decimal para que puedas verificar cualquier combinación de permisos al instante.
Cómo funcionan los permisos de archivos Unix en octal
En Unix y Linux, los permisos de archivos se representan con tres grupos de tres bits: propietario (owner), grupo (group) y otros (others). Cada grupo tiene tres permisos: lectura (r = 4), escritura (w = 2) y ejecución (x = 1). El dígito octal de cada grupo es la suma de los permisos activados. Grupo 7 = r+w+x = 4+2+1 (todos los permisos). Grupo 6 = r+w = 4+2 (lectura y escritura). Grupo 5 = r+x = 4+1 (lectura y ejecución). Grupo 4 = r (solo lectura). chmod 755 significa: propietario (7 = rwx), grupo (5 = r-x), otros (5 = r-x). chmod 644 significa: propietario (6 = rw-), grupo (4 = r--), otros (4 = r--).
Por qué el octal es la base perfecta para permisos Unix
La elección del octal para los permisos Unix no es arbitraria: un dígito octal representa exactamente 3 bits (2³ = 8), que coincide perfectamente con los 3 bits de permiso (r, w, x) de cada grupo. Esto significa que cada dígito octal mapea directamente a un conjunto de permisos sin necesidad de cálculos adicionales. Por contraste, un dígito decimal no tiene esta correspondencia limpia con potencias de 2. La relación octal-binario es especialmente elegante: un dígito octal se convierte a binario simplemente expandiendo cada dígito a 3 bits. 7 = 111, 5 = 101, 4 = 100. chmod 755 en binario es 111 101 101.
Permisos especiales: setuid, setgid y sticky bit
Además de los tres grupos estándar, los permisos Unix tienen tres bits especiales: setuid (4), setgid (2) y sticky bit (1), que forman un cuarto dígito octal al principio. chmod 4755 establece el bit setuid: cuando se ejecuta un archivo con setuid, el proceso se ejecuta con los privilegios del propietario del archivo en lugar del usuario que lo ejecuta (como hace el comando passwd). chmod 2755 establece setgid en un directorio: los nuevos archivos en ese directorio heredan el grupo del directorio. chmod 1755 establece el sticky bit en un directorio: solo el propietario puede eliminar sus propios archivos (como en /tmp).
Errores de permisos más frecuentes y cómo solucionarlos
Los errores de permisos 403 Forbidden en servidores web suelen deberse a que los archivos o directorios tienen permisos incorrectos para el usuario del servidor web (generalmente www-data o apache). Para directorios, el mínimo necesario es chmod 755 (el servidor web necesita permiso de ejecución para navegar por el directorio). Para archivos HTML, CSS, JS y PHP, chmod 644 es el estándar (el servidor lee pero no escribe). Para archivos de configuración con credenciales, chmod 600 restringe el acceso al propietario únicamente. Nunca usar chmod 777 en un entorno de producción porque permite que cualquier usuario del sistema escriba en el archivo.
Preguntas frecuentes
- ¿Cuál es la diferencia entre chmod 644 y chmod 755?
- chmod 644 = rw-r--r--: el propietario puede leer y escribir, el grupo y otros solo pueden leer. Es el permiso estándar para archivos HTML, CSS, imágenes y documentos. chmod 755 = rwxr-xr-x: el propietario puede leer, escribir y ejecutar; el grupo y otros pueden leer y ejecutar. Es el permiso estándar para directorios y scripts ejecutables.
- ¿Qué hace chmod 777 exactamente y por qué es peligroso?
- chmod 777 = rwxrwxrwx: propietario, grupo y todos los usuarios del sistema tienen permisos completos de lectura, escritura y ejecución. Es peligroso en producción porque cualquier usuario o proceso del sistema (incluyendo potenciales atacantes que hayan comprometido otro servicio) puede modificar o ejecutar el archivo. En un servidor web, esto puede permitir que un PHP malicioso modificado sobrescriba archivos del sitio web.
- ¿Cómo convierto permisos simbólicos (rwxr-xr-x) a octal?
- Lee los tres grupos de tres caracteres de izquierda a derecha. Para cada grupo, asigna: r=4, w=2, x=1, -=0, y suma. rwx = 4+2+1 = 7. r-x = 4+0+1 = 5. r-- = 4+0+0 = 4. Concatena los tres dígitos: 754. El conversor de bases te permite verificar cualquier combinación convirtiendo el resultado decimal a octal.