Para Cambiar permisos de archivos y carpetas con Chmod es necesario conocer el concepto de Chmod, según Wikipedia:
«Chmod (change mode, cambiar modo en idioma inglés) es una llamada al sistema y su comando asociado en el sistema operativo UNIX (estandarizados en POSIX y otros estándares) que permite cambiar los permisos de acceso de un fichero o directorio.»
https://es.wikipedia.org/wiki/Chmod
Por otro lado es una aplicación que nos permite cambiar permisos referentes a lectura, escritura y ejecución de archivos o carpetas enteras.
Tabla de contenido
La estructura del comando
Los parametros del comando chmod se pueden usar de la siguiente manera:
$ chmod [modificadores] permisos fichero/directorio
Modificadores es opcional, y puede tomar los valores:
- -f: no visualiza los posibles mensajes de error que puedan ocurrir debido a conflictos en la asignación de permisos.
- -v: lista los ficheros y directorios a los que se les va aplicando el comando a medida que el mismo se ejecuta.
- -R: aplica el comando chmod recursivamente a todos los ficheros y de los subdirectorios.
- -C: igual a -v con excepción que solo lista los ficheros modificados.
Hay 3 atributos básicos para archivos simples: lectura, escritura y ejecutar.
- Permiso de lectura (read) te permite ver su contenido.
- Permiso de escritura (write) te permite ver y modificar su contenido. Puedes agregar, sobrescribir o borrar.
- Permiso de ejecución (execute) te permite ejecutar como si tratase de programas ejecutables. Lo podremos ejecutar como cualquier comando ó un script que en ese caso necesitaría permiso de lectura y ejecución, ó por otro lado tenemos un programa compilado que solo necesitaria permiso de lectura.
Los caracteres atribuidos a los permisos son:
- r quiere decir escritura y viene de Read
- w quiere decir lectura y viene de Write
- x quiere decir ejecución y viene de eXecute
Usando chmod para cambiar los permisos
Chmod es el comando utilizado para cambiar permisos, se pueden agregar o remover permisos a uno o mas archivos con + (mas) o – (menos)
Por ejemplo, si quieres evitar modificar un archivo importante, simplemente quita el permiso de escritura en tu “archivo” con el comando Chmod:
$ chmod -w ./tuArchivo
Si quieres hacer un script ejecutable, escribe:
$ chmod +x /home/ubicacion/tuscript
Si quieres remover o agregar todos los atributos a la vez:
$ chmod -rwx archivo
$ chmod +rwx archivo
También puedes usar el signo = (igual) para establecer los permisos en una combinación exacta, este comando remueve los permisos de escritura y ejecución dejando solo el de lectura
$ chmod =r archivo
Clases de usuarios
Los permisos en sistemas derivados de UNIX se clasifican en 4 tipos, que son: usuario, grupo, otros y todos (Abreviados en ingles como UGOA).
Por tanto, los tipos de usuarios a los cuales se les puede otorgar los permisos básicos que comentamos son:
- u – dueño: dueño o propietario del fichero o directorio
- g – grupo: grupo al que pertenece el fichero
- o – otros: todos los demás usuarios que no son el propietario ni del grupo
- a – todos: incluye al dueño, al grupo y a otros
Los permisos aplicados a un usuario en especifico en relación a un archivo se determinan en un orden lógico de precedencia. Ejemplo, el usuario dueño del archivo tendrá los permisos dados al tipo de usuario, sin importar los asignados al tipo grupo o al tipo otros.
Asignación de permisos
Existen 2 formas o modos de cambiar permisos de archivos y carpetas con Chmod por usuario:
Modo octal
Como resultado de la combinación de los tres tipos de permisos (lectura, escritura y ejecución) y los tres tipos de usuarios (dueño, grupo y otros) obtenemos 2^3=8 permisos en total que pueden ser asignados o denegados de forma independiente.
La base 8 se utiliza comúnmente para que exista un dígito por cada combinación de permisos (un bit a modo de bandera por cada permiso, con valor 1 ó 0 según el permiso esté concedido o denegado).
De esta forma, las posibles combinaciones se resumen en números octales de tres dígitos del 000 al 777, cada uno de ellos permite otorgar un tipo de permiso distinto a cada tipo de usuario:
El primer dígito establece el tipo de permiso deseado al propietario; el segundo al grupo; y el tercero al resto de los usuarios. Como en la siguiente imagen:

Por ejemplo:
chmod 777 archivo.html | Si quieres dar todos los permisos todos los archivos de una carpeta |
chmod 766 file.txt | Otorga acceso total al propietario, y lectura y escritura a los demás |
chmod 770 file.txt | Otorga acceso total al dueño y al grupo y elimina todos los permisos a los demás usuarios |
chmod 635 file.txt | Otorga lectura y escritura al propietario, escritura y ejecución al grupo, y lectura y ejecución al resto |
chmod 777 | Otorga todos los permisos a todos los archivos de una carpeta |
chmod -R 777 | Otorga todos los permisos a todos los archivos de la de una carpeta de forma recursiva |
Modo carácter
Posee 3 modificadores que permiten realizar la tarea:
- «+» añade un modo.
- «–» elimina un modo.
- «=» específica un modo (sobrescribiendo el modo anterior).
Por ejemplo:
chmod +r arch.txt | Agrega permisos de lectura a todos los usuarios(solo a algunos elegidos previamente) |
chmod u+w arch.txt | Agrega permisos de escritura al propietario |
chmod –x arch.txt | Elimina el permiso de ejecución a todos los usuarios |
chmod u=rw,go= arch.txt | Establece los permisos de lectura y escritura al propietario y elimina todos los permisos a los demás usuarios |
Espero les sirva, cualquier duda en los comentarios estaré pendiente.
Fuentes:
«https://es.wikipedia.org/wiki/Chmod«
Date una vuelta por otros tutoriales por aquí.
Excelente muchas gracias!