Comandos LinuxExplicados en español
/
Ficha19 / 104
Categoría
Permisos
Ejemplos
6
Ver también
chown · sudo · ls

chmod

change mode (cambiar modo)

Cambia quién puede leer, escribir o ejecutar un archivo o carpeta.

Sirve para definir quién puede leer, escribir o ejecutar un archivo o carpeta. Lo usas cuando un script no corre por falta de permiso de ejecución, o cuando quieres limitar quién puede modificar algo.

Sintaxischmod [opciones] MODO ARCHIVO...
Precaución

chmod -R sobre carpetas del sistema (/, /etc, /usr, /var) puede romper el sistema: sudo, SSH y muchos servicios revisan sus permisos y dejan de funcionar si cambian. chmod -R 777 además deja que cualquier usuario modifique esos archivos, un hueco de seguridad grave.

§ 1

Despiece

6 ejemplos
Hacer ejecutable un script

Hacer ejecutable un script

3 piezas
Lámina01 / 06
Comandochmod 755 script.sh
Piezas3
Escala1:1
N.ºPiezaTipoQué hace
1chmodComandoEl comando para cambiar permisos.
2755Valor7 para ti (leer, escribir y ejecutar), 5 para el grupo y 5 para los demás (leer y ejecutar).
3script.shArgumentoEl archivo al que le cambias los permisos.
Resultado

Tú puedes editar y ejecutar el script; los demás solo pueden leerlo y ejecutarlo.

Dar permiso de ejecución a todos

3 piezas
Lámina02 / 06
Comandochmod +x script.sh
Piezas3
Escala1:1
N.ºPiezaTipoQué hace
1chmodComandoEl comando para cambiar permisos.
2+xValorAgrega el permiso de ejecución sin tocar los demás permisos.
3script.shArgumentoEl archivo al que le agregas la ejecución.
Resultado

El script ya se puede correr con ./script.sh. Sin letra antes del +, la ejecución se agrega para el dueño, el grupo y los demás (salvo lo que bloquee tu umask).

Quitar la escritura a todos

3 piezas
Lámina03 / 06
Comandochmod a-w archivo.txt
Piezas3
Escala1:1
N.ºPiezaTipoQué hace
1chmodComandoEl comando para cambiar permisos.
2a-wValora significa todos; -w quita el permiso de escritura.
3archivo.txtArgumentoEl archivo al que le quitas la escritura.
Resultado

Nadie puede modificar el archivo, salvo root. Como dueño, puedes devolverte el permiso con chmod u+w archivo.txt.

Dar escritura al grupo

3 piezas
Lámina04 / 06
Comandochmod g+w archivo.txt
Piezas3
Escala1:1
N.ºPiezaTipoQué hace
1chmodComandoEl comando para cambiar permisos.
2g+wValorg es el grupo; +w agrega el permiso de escritura.
3archivo.txtArgumentoEl archivo al que le das escritura al grupo.
Resultado

Las personas del grupo pueden editar el archivo.

Cambiar permisos de una carpeta y su contenido

4 piezas
Lámina05 / 06
Comandochmod -R 755 scripts/
Piezas4
Escala1:1
N.ºPiezaTipoQué hace
1chmodComandoEl comando para cambiar permisos.
2-ROpciónRecursivo: aplica el cambio a la carpeta y a todo lo de adentro.
3755Valor7 para ti (todo), 5 para el grupo y 5 para los demás (leer y ejecutar).
4scripts/ArgumentoLa carpeta cuyo contenido queda con permisos 755.
Resultado

La carpeta, sus archivos y subcarpetas quedan con permisos 755. Ojo: eso vuelve ejecutables todos los archivos, también los que no son programas. Para dar x solo a las carpetas usa chmod -R u=rwX,go=rX scripts/ (la X mayúscula da ejecución solo a las carpetas y a lo que ya era ejecutable).

Copiar los permisos de otro archivo

3 piezas
Lámina06 / 06
Comandochmod --reference=modelo.txt archivo.txt
Piezas3
Escala1:1
N.ºPiezaTipoQué hace
1chmodComandoEl comando para cambiar permisos.
2--reference=modelo.txtOpciónToma los permisos de modelo.txt.
3archivo.txtArgumentoEl archivo que queda con los permisos de modelo.txt.
Resultado

archivo.txt queda con exactamente los mismos permisos que modelo.txt.

§ 2

Calculadora de permisos

755rwxr-xr-x
$ chmod 755 archivosolo tú puedes modificarlo
LeerEscribirEjecutarSumaDueño7Grupo5Otros5
Comunes

Cada fila suma sus teclas: leer vale 4, escribir 2 y ejecutar 1. Las tres sumas forman el número.

§ 3

Opciones

Las que sí vas a usar
OpciónQué hace
-R--recursiveAplica el cambio a la carpeta y todo lo que tiene dentro.
-v--verboseMuestra un mensaje por cada archivo al que le cambia permisos.
-c--changesSolo muestra mensajes cuando el permiso cambia de verdad.
-f--silentOculta la mayoría de los mensajes de error, por ejemplo cuando no puedes cambiar un archivo.
--reference=ARCHIVOCopia los permisos de otro archivo en vez de usar un número.
§ 4

Fallas comunes

FallaRemedio
Usar chmod 777 para arreglar un error de permisos.Da solo el permiso que falta. 777 deja que cualquiera modifique el archivo.
Invertir el orden y escribir primero el archivo.El orden es siempre chmod MODO ARCHIVO. Escribe chmod 755 script.sh, no chmod script.sh 755.
Olvidar -R al cambiar permisos de una carpeta.chmod 755 carpeta solo cambia la carpeta, no lo que tiene dentro. Agrega -R para todo el árbol, pero recuerda que -R 755 vuelve ejecutables todos los archivos; chmod -R u=rwX,go=rX carpeta lo evita.
§ 5

Preguntas frecuentes

¿Qué significa chmod 755?
El 7 es para el dueño, que puede leer, escribir y ejecutar. El 5 es para el grupo y el 5 para los demás, que solo pueden leer y ejecutar. Es el modo típico para scripts y programas compartidos.
¿Cómo hago un archivo ejecutable?
Escribe chmod +x archivo o chmod 755 archivo. Con +x agregas el permiso de ejecución sin tocar los demás; con 755 lo dejas definido para ti, el grupo y los demás.
¿Cuál es la diferencia entre chmod 777 y chmod 755?
777 da lectura, escritura y ejecución a todos los usuarios, así que cualquiera puede modificar el archivo. Con 755 solo el dueño puede escribir; el grupo y los demás pueden leer y ejecutar. Para scripts usa 755.
¿Qué significa +x en chmod?
+x agrega el permiso de ejecución (execute) sin cambiar el resto. Como no dice para quién, se aplica al dueño, al grupo y a los demás, salvo lo que bloquee tu umask. Si solo lo quieres para ti, usa u+x.
¿Cómo cambio permisos a una carpeta y todo lo que contiene?
Usa la opción -R: chmod -R 755 carpeta cambia la carpeta, sus archivos y subcarpetas de una sola vez. Como eso vuelve ejecutables todos los archivos, muchas veces conviene más chmod -R u=rwX,go=rX carpeta, que da x solo a las carpetas y a lo que ya era ejecutable.
§ 6

Ver también