Permisos de archivos en Linux
WebTodo se ejecuta en tu navegador: no se sube nada
Cambiar permisos es el trabajo de cada día, y las tres notaciones tienen su sitio a la vez que resultan ilegibles entre sí: `755` es lo que va en un archivo de configuración o en un Dockerfile, `u+x,g-w,o=r` es lo que se teclea en el `chmod` de la línea de comandos, y `drwxr-xr-x` es lo que imprime `ls -l` y lo que alguien te manda en una captura. Aquí se traducen entre sí y se explica cada bit. Los tres bits especiales (el dígito inicial en octal) tienen su propia explicación y solo aparecen cuando están puestos de verdad: `4` setuid, `2` setgid y `1` sticky. En `ls -l` ocupan la posición de ejecución, de ahí que existan `s` y `S` — y `S` significa «bit especial puesto pero sin permiso de ejecución», que en un sistema real es casi siempre un error. Esta herramienta lo señala aparte.
Funciones
- Las tres notaciones, convertidas entre sí: octal (755 / 0755 / 0o755), simbólica (u+x,g-w,o=r) y la cadena de ls -l (-rwxr-xr-x / drwxr-xr-x)
- Cada bit explicado: qué puede leer, escribir o ejecutar el propietario, el grupo y los demás
- Los tres bits especiales explicados: setuid, setgid (en un directorio, herencia de grupo) y sticky (en un directorio, solo el propietario puede borrar)
- ⚠️ Una S o una T mayúscula se avisa por separado: significa que el bit especial está puesto pero el archivo no es ejecutable, lo que casi siempre es un error
- Permisos por defecto de los archivos nuevos (666 & ~umask) y directorios nuevos (777 & ~umask) deducidos del umask
- También da un comando chmod listo para pegar; si la entrada ya es un comando entero, se conservan sus rutas y opciones como -R
- Cuando una forma simbólica omite el «quién» (solo +x), parte del permiso de partida que fijes en vez de adivinar tu umask
- Admite asignaciones que copian de otra clase, como `g=u`: `=` limpia antes de poner, y las cláusulas se aplican de izquierda a derecha dentro de un mismo comando (`u=x,g=u` y `g=u,u=x` difieren)
- ⚠️ Si la entrada no se reconoce, el error señala el carácter exacto (cuál, qué es, el texto de alrededor), no un vago «formato incorrecto»
Cómo se usa
- Pega el permiso: octal, simbólico o la cadena de ls -l, los tres sirven
- Ajusta el permiso de partida (para la forma simbólica que omite el «quién») y el umask si quieres
- El resultado da las otras dos notaciones, la explicación bit a bit y el comando chmod
Preguntas frecuentes
- ¿Es distinto 755 de 0755?
- No. El `0` inicial solo marca el literal como octal (en C y en el shell, para que no se lea como decimal o hexadecimal). Aquí todo se imprime con cuatro dígitos para que las dos formas no parezcan distintas. Pero un `77` de dos dígitos se rechaza: podría ser un `077` mal escrito o un `0077`, y esos difieren en dos clases de permiso enteras: una conjetura abriría un agujero que no se ve.
- ¿Qué diferencia hay entre rwxr-xr-x y -rwxr-xr-x?
- El primero son los nueve caracteres de permiso; el segundo añade el carácter de tipo inicial, donde `-` es un archivo normal, `d` un directorio y `l` un enlace simbólico. El tipo no interviene en la aritmética de permisos, pero sí cambia cómo se lee el bit sticky, así que se aceptan las dos formas y la `d` se conserva en la salida.
- ¿No es setgid para ejecutables?
- En un archivo significa ejecutarse con el grupo del archivo. ⚠️ En un directorio significa otra cosa: lo que se cree dentro hereda el grupo del directorio y no el grupo principal de quien lo crea. Ese segundo comportamiento es lo que hace funcionar los directorios compartidos, y es el que se olvida.
- ¿Por qué mi archivo nuevo no es 644?
- Los archivos nuevos parten de `666 & ~umask` y los directorios nuevos de `777 & ~umask`. Los archivos parten de 666 porque un archivo normal recién creado no debería ser ejecutable por defecto; los directorios parten de 777 porque un directorio sin permiso de ejecución es un directorio al que no se puede entrar. Así, con umask 022 salen 644 y 755, y con umask 077 salen 600 y 700.
- ¿Qué es la u de u+x y qué pasa si la omito?
- `u` es el propietario del archivo, `g` su grupo, `o` los demás y `a` los tres. Cuando se omite el «quién» (solo `+x`), el `chmod` real lo aplica según tu umask, que es estado del proceso y no un valor fijo. Por eso esta herramienta no lo adivina: usa el permiso de partida que fijes arriba y lo dice.
- ¿Qué diferencia hay entre X y x?
- `x` pone el bit de ejecución sin condiciones; `X` solo lo pone cuando el destino es un directorio o algo que ya tiene un bit de ejecución. `chmod -R a+X` es la forma habitual: dejar entrar en los directorios sin volver ejecutables todos los archivos de dentro. Esta herramienta no puede saber si el destino es un directorio, así que usa la segunda condición.
- ¿Qué significa `g=u`?
- El lado derecho de un operador puede ser una clase (`u`/`g`/`o`), lo que significa copiar los permisos de otra clase: `g=u` copia los bits rwx del propietario al grupo, y combinaciones como `u=g,o=g` también valen. ⚠️ Dos cosas se equivocan con facilidad: ① `=` limpia antes de poner, así que los bits que el grupo tenga y el propietario no se quitan en vez de sumarse con OR; ② las cláusulas se aplican de izquierda a derecha dentro de un mismo comando y la clase de origen se lee tal como está en ese punto, así que `u=x,g=u` (g ve la u nueva) difiere de `g=u,u=x` (g ve la u antigua). Los bits especiales no se copian.
Herramientas relacionadas
Analizador de URL
WebDescompone una URL en esquema, host, puerto, ruta, parámetros y ancla, con cada parámetro en crudo y decodificado. Todo en tu navegador.
Analizador de UA
WebAnaliza un User-Agent: navegador, versión, sistema, tipo de dispositivo y motor, con las reglas que coinciden. Solo coincidencia de patrones.
Códigos de estado HTTP
WebConsulta un código de estado HTTP: significado, clase 1xx–5xx, usos típicos y trampas habituales. También busca por palabra clave. Todo local.
Tipos MIME
WebConsulta el tipo MIME a partir de una extensión, o la extensión por defecto de un tipo de medio. Solo los habituales. Todo en tu navegador.
Generador de .gitignore
WebGenera un .gitignore a partir de plantillas de lenguaje, framework, editor y sistema. Las secciones se fusionan y se quitan duplicados. Todo local.
Imagen a Base64
WebConvierte una imagen a Base64 o a data URL soltándola, eligiéndola o pegándola. Redimensiona y cambia de formato en local; nunca se sube nada.