Modificar permisos de ficheros en Linux con Bash con el formato simbólico

Seguro que ya conoces la forma de dar permisos a ficheros usando números. Por ejemplo:

chmod 765 fichero

En ocasiones queremos cambiar sólo uno de los permisos manteniendo los demás. Por ejemplo, podríamos querer dar permisos de escritura a los usuarios del grupo en todos los ficheros de una carpeta. Pero no queremos modificar ninguno de los demás permisos ya existentes. Para esto nos viene muy bien usar el el formato simbólico.

Imaginemos que la carpeta tiene los siguientes archivos:

$ ls -las
 0 -rwxr-xr-x   1 gorka gorka     0 dic 28 00:57 fichero1
 0 -rw-rw-r-x   1 gorka gorka     0 dic 28 00:57 fichero2
 0 -rw-rw-rw-   1 gorka gorka     0 dic 28 00:58 fichero3
 0 -rwxrwxrwx   1 gorka gorka     0 dic 28 00:58 fichero4

Y queremos quitar los permisos de escritura para los miembros del grupo al que pertenece el fichero.

Si usásemos el formato de números lo tendríamos complicado porque no queremos modificar el resto de permisos. ¿Cómo podemos solucionarlo? Pues podemos usar esto:

chmod g-w *

Este comando quitará el permiso de escritura a los usuarios que pertenezcan al grupo del archivo. El resultado será:

$ ls -las
 0 -rwxr-xr-x   1 gorka gorka     0 dic 28 00:57 fichero1
 0 -rw-r--r-x   1 gorka gorka     0 dic 28 00:57 fichero2
 0 -rw-r--rw-   1 gorka gorka     0 dic 28 00:58 fichero3
 0 -rwxr-xrwx   1 gorka gorka     0 dic 28 00:58 fichero4

Como se puede ver los demás permisos se mantienen igual que estaban, solo hemos quitado el permiso de escritura al grupo.

El formato simbólico

El formato es:

chmod [usuarios_afectados][+-=][permisos] lista_archivos

Donde:

  • usuarios_afectados - Son los usuarios a los que damos o quitamos permisos. Opciones: u, g, o, a.
  • [+-=] - El '+' concede el permiso, el '-' lo quita y el '=' hace que los permisos indicados sean los únicos que tenga el archivo.
  • permisos Son los permisos a modificar. Ver las opciones más adelante.

Controlar a qué usuarios damos o quitamos permisos

Las opciones que tenemos son:

  • u - realiza la operación con el propietario de los archivos/carpetas.
  • g - realiza la operación para el grupo al que pertenecen los archivos/carpetas.
  • o - el cambio se aplica a todos los demás.
  • a - el cambio se aplica al propietario, al grupo y a todos.

Opciones para dar o quitar permisos

  • r - modifica el permiso de lectura.
  • w - modifica el permiso de escritura.
  • x - modifica el permiso de ejecución de un archivo (o de acceso si es una carpeta).
  • X - cambia el permiso de acceso/ejecución si es una carpeta o si el archivo ya tiene permisos de ejecución para algún usuario.
  • s - Cambia el ID del usuario o el grupo al ejecutar el archivo.
  • t - Lo confieso, nunca he sabido para qué sirve esta opción.

Ejemplos

No permitir que ningún usuario ejecute los archivos:

chmod a-x *

Ojo, si lo aplicas a carpetas ningún usuario podrá acceder a ellas.

Dar al propietario de los archivos permisos de escritura:

chmod u+x *
Autor:
Nivel: Principiante
Palabras clave:
Fecha publicado:
Fecha actualizado: 11-01-2017

Otros capítulos de la misma serie

Este capítulo es parte de la serie: Introducción a Bash.

Y muchos más en preparación.

Disponible en los planes: Laravel hero PHP a tope