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).
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 (---).
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 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)
man chmod
Referencias | LinuxCentro | Think Ubuntu
No me permite hacerlo :(
Me dice Operation no permited con el 764
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) :-)