4.7.3.- Cambiar el modo de un fichero

chmod_tituloEl comando chmod (“change mode”, cambiar modo) es una llamada al sistema y su comando asociado en el sistema operativo UNIX/LINUX (estandarizados en POSIX y otros estándares) que permite cambiar los permisos de acceso de un fichero o directorio. Su sintaxis es:

chmod_sintaxis

Las opciones de chmod son similares a chown y chgrp. Particularmente con la opción --recursive o -R cambia todos los ficheros de un árbol de directorios. Podemos especificar el modo de fichero de dos maneras básicas:

  • Como número octal.
  • Como un modo  simbólico

La representación octal del modo es la misma que la descrita anteriormente (sección 4.7.1.- Significado de los bits de permiso). Por ejemplo para cambiar los permisos de libreta.doc por rw-r--r--, podemos usar el comando:

chmod_ejemplo_1

Además, podemos anteponer a los tres dígitos de los permisos de propietario, de grupo y globales otro dígito para que defina los permisos especiales.

chmod_6750

Tenemos una cadena de permisos:chmod_desglose1

El primer grupo de la cadena de propiedades pertenece al usuario y admiten tres bit’s.

chmod_desglose2

El segundo grupo de tres se refiere a los permisos para el grupo.

chmod_g

Y el tercer grupo de tres se refiere a los permisos globales.

chmod_o

Desglosemos la cadena de permisos para una mejor comprensión:

chmod_desglose3

Según los valores de los bits podemos definir los permisos, por ejemplo si queremos modificar el bit del propietario para sólo lectura (r) el primer valor sería solamente el 4, si queremos los permisos de lectura y escritura (rw)entonces se sumaría el valor de lectura (4) más el valor de escritura (2) lo que tendríamos un resultado de 6; si además queremos hacer que el fichero sea un ejecutable (x) según el ejemplo de arriba habría que sumarle uno más al valor anterior (6+1=7).

chmod_permiso_usuario

 Supongamos que tenemos un ejecutable llamado almacen y desea definir los bits SUID y SGID (6) para lectura y escritura y que el programa sea leído, escrito y ejecutado por el usuario (7) y que el grupo lo pueda leer y ejecutar (5) pero el resto no tenga ningún acceso:

chmod_almacen

Vemos el fichero almacen modificado para lectura, escritura y ejecución para el usuario, lectura y escritura para el grupo, y ningún permiso global.

tabla_octal

Tabla con los permisos aplicables.

El modo simbólico 

Los códigos utilizados, para asignar con chmod  los permisos básicos anteriormente mencionados son:

  • u .- dueño: dueño del fichero o directorio.
  • g .- grupo: grupo al que pertenece el fichero.
  • o .- otros: todos los demás usuarios que no son el dueño ni del grupo.
  • a .- todos: incluye al dueño, al grupo y a otros.

Tomemos como ejemplo el archivo libreta.doc que no tiene asignado ningún permiso:

chmod_simbolo1Primero vamos a dar permiso de ejecución para el usuario, grupo, y los demás:

Vemos que al dar permiso de ejecución el nombre del archivo cambia de color.

Vemos que al dar permiso de ejecución el nombre del archivo cambia de color.

Daremos permisos para lectura y escritura del usuario y del grupo.

chmod_simbolo3

Por último quitaremos los permisos de lectura, escritura y ejecución para los usuarios globales.

chmod_simbolo4

Generalmente los permisos simbólicos son más útiles cuando deseamos realizar un cambio sencillo (como añadir permisos de ejecución o escritura a una o más clases de usuarios) o cuando deseamos realizar cambios similares en muchos ficheros que afectan a otros permisos (por ejemplo, añadir permisos de escritura sin que ello afecte a los permisos de ejecución).

chmod_dimbolo_5

El acceso de lectura/escritura a la entrada del directorio o, incluso, al propio fichero, no le da al usuario el derecho a cambiar las estructuras de los nodos del índice a menos que lo haga de modo indirecto como, por ejemplo, cuando al escribir se cambia el tamaño del fichero o cuando un borrado de fichero elimina la necesidad del nodo índice).