Modificar los permisos de lectura, escritura y ejecución en archivos o carpetas de Linux


En el siguiente tutorial, y a propósito de la entrada que pubiqué hace unos días sobre cómo modificar el archivo de configuración de GRUB 2 y la necesidad de cambiar los permisos de escritura del fichero en cuestión para poder guardar los cambios realizados, aprenderemos a modificar los permisos de lectura, escritura y ejecución en archivos y carpetas de Linux haciendo uso de la Terminal.


Verificar permisos de archivos y directorios desde la Terminal


Antes de meternos en materia, no estaría de más echar un vistazo a los tutoriales sobre los comandos más básicos que ya hay publicados en la sección Manuales > La Terminal.

Cuando queremos obtener información sobre un fichero o directorio usamos el comando ls. Si además usamos el modificador -l, la consola nos devuelve una completa lista con una serie de campos que nos dicen qué clase de permisos tiene el fichero o directorio en cuestión.

Por ejemplo:

ls -l

y nos devuelve algo así:

-rwxr-x---   1 jabba grupo1 2234 Dic 13 22:47 archivodeejemplo

En la primera columna se pueden ver una serie de letras y guiones -rwxr-x---. Estas letras nos dicen quién en el sistema, y qué clases de permisos tiene el fichero "archivodeejemplo".

Estas letras están agrupadas en tres grupos con tres posiciones cada uno, más una primera posición que nos dice de qué clase de archivo se trata ("d" si se trata de un directorio, o "-" si es un archivos de datos). En este ejemplo la primera posición es "-" con lo cual el fichero "archivodeejemplo" es un archivo de datos y no una carpeta.
  • El primer grupo de tres (rwx en nuestro ejemplo) nos dice qué clase de permisos tiene el dueño del fichero.
  • El segundo grupo de tres (r-x en nuestro caso) nos dice qué clase de permisos tiene el grupo del fichero.
  • Y el último grupo de tres (--- en nuestro caso) nos dice qué clase de permisos tienen todos los demás usuarios del sistema sobre este fichero (en este caso ningún permiso).
El resto de columnas hacen referencia al dueño del fichero, el grupo al que pertenece, el tamaño, la fecha y hora de la última modificación y el nombre del fichero o directorio respectivamente.

Haciendo un repaso a la nomenclatura (que es muy sencilla) tenemos que: "r" significa permiso para leer, "w" significa permiso para escribir y "x" significa permiso para ejecutar. Teniendo claro eso, el resto es muy fácil.

Así pues, el fichero al que hemos llamado "archivodeejemplo" tendría los siguientes permisos:
  • El usuario (jabba en este caso) puede leer, escribir o modificar, y ejecutar el fichero (rwx).
  • Los usuarios pertenecientes al grupo1 pueden leer y ejecutar, pero no escribir o modificar el "arhivodeejemplo".
  • Los demás usuarios no pueden hacer nada, ni leerlo, ni escribir/modificar, ni ejecutarlo (---).
Teniendo claro ésto, ya podemos pasar a ver cómo modificar estos permisos haciendo uso del comando chmod.


Modificar los permisos desde la Terminal: comando chmod


El comando chmod se aplica tanto sobre archivos individuales como sobre carpetas. La sintaxis del comando tendría la forma:

chmod [opciones] XXX ruta_del_fichero_o_de_la_carpeta

En [opciones] podemos especificar cosas como, por ejemplo, aplicar los permisos a todo el contenido de un directorio. Es decir, en el caso de que por ejemplo sean carpetas, podemos usar la opción -R para dar permisos recursivamente a todas las carpetas y ficheros que contenga ese directorio.

En XXX es donde especificamos los permisos. Podemos bien usar la nomenclatura que hemos mencionado anteriormente ("r", "w" y "x") o bien usar un sencillo código numérico para establecer los permisos basado en reglas binarias:
  • 0 = Ningún permiso (Lectura = 0 + Escritura = 0 + Ejecución = 0)
  • 1 = Permiso de Ejecución (Lectura = 0 + Escritura = 0 + Ejecución = 1)
  • 2 = Permiso de Escritura (Lectura = 0 + Escritura = 2 + Ejecución = 0)
  • 3 = Permiso de Escritura y Ejecución (Lectura = 0, Escritura = 2, Ejecución = 1)
  • 4 = Permiso de Lectura (Lectura = 4 + Escritura = 0 + Ejecución = 0)
  • 5 = Permiso de Lectura y Ejecución (Lectura = 4 + Escritura = 0 + Ejecución = 1)
  • 6 = Permiso de Lectura y Escritura (Lectura = 4 + Escritura = 2 + Ejecución = 0)
  • 7 = Permiso de Lectura, Escritura y Ejecución (Lectura = 4 + Escritura = 2 + Ejecución = 1)
Por tanto, para cada identidad podemos obtener un número comprendido entre "0" y "7" que especifica los permisos de cada usuario.

Por poner un ejemplo, y aquí aprovecho la entrada sobre la modificación del archivo de configuración del GRUB 2, si quisiéramos cambiar los permisos de lectura y escritura del citado archivo con "chmod" habría que escribir lo siguiente:

chmod 644 /boot/grub/grub.cfg

Donde el significado del 644 sería:
  • 6 (el usuario propietario puede Leer y Escribir)
  • 4 (el grupo al que pertenece el archivo sólo puede Leer)
  • 4 (otros usuarios sólo pueden Leer)
Para ver éstas y otras opciones del comando "chmod", podemos consultar la documentación del comando abriendo una terminal y escribiendo:

man chmod

Referencias | LinuxCentro | Think Ubuntu Related Posts Plugin for WordPress, Blogger...

2 comentarios:

  1. No me permite hacerlo :(
    Me dice Operation no permited con el 764

  2. Hola Luis Enrique, echa un vistazo al último tutorial que he publicado sobre archivos bloqueados sobre los que no tenemos permisos en la papelera, ya que aunque no es tan específico, sí cuento una forma de otorgar permisos de escritura de forma rápida y sencilla. Puede que te sirva (aunque sea para un fin diferente) :-)

Deja tu comentario:

Procura que tu comentario esté relacionado con esta entrada y no olvides revisar la ortografía. Estás en tu perfecto derecho de comentar anónimamente, pero por favor, escribe con respeto y educación. Los comentarios que incumplan estas normas básicas de civismo serán eliminados sin previo aviso ni piedad.

Bajar inicio