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.

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
Cuidado con editar permisos de archivos importantes, si los editas como prueba, no olvides dejarlos como estaban originalmente.

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:

Cambiar permisos de archivos y carpetas con chmod


Por ejemplo:

chmod 777 archivo.htmlSi quieres dar todos los permisos todos los archivos de una carpeta
chmod 766 file.txtOtorga 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 777Otorga todos los permisos a todos los archivos de una carpeta
 chmod -R 777Otorga 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.txtAgrega permisos de lectura a todos los usuarios(solo a algunos elegidos previamente)
chmod u+w arch.txtAgrega permisos de escritura al propietario
chmod –x arch.txtElimina el permiso de ejecución a todos los usuarios
chmod u=rw,go= arch.txtEstablece 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í.