Tux-Seguridad¿Cómo cambiar los permisos de ficheros y directorios en nuestro sistema GNU/Linux?

Los comandos que se citan se deben ejecutar desde la línea de comandos utilizando una terminal.

Los comandos utilizados para consultar toda la información referente a permisos en GNU/Linux son los siguientes; ‘man chmod’, ‘man chown’ y ‘man chgrp’.

Información de un fichero/directorio

El comando ‘ls’ muestra un listado de los archivos y subdirectorios especificados en la línea de órdenes, el usuario dispone de comandos adicionales que se pueden agrupar con la intención de configurar el resultado.

Cuando obtienes información sobre un fichero/directorio con el comando ‘ls’, existen diferentes campos que te dicen que clase de permisos tiene el fichero/directorio.

Ejemplo: [user@localhost]# ls -l -rwxr-x— 1 pepito depart1 4348 Nov 24 16:19 test

En la primera columna se puede ver una serie de letars y guiones ‘-rwxr-x---', la combinación de letras y guiones expresa el nivel de permisos que tiene el usuario ‘user’ en el sistema sobre el fichero test (del ejemplo anterior).

Estas letras están agrupadas en tres grupos con tres posiciones cada uno, más una primera posición que nos dice de que clase de archivo se trata (los mas normales (d) directorios, o (-) archivos de datos). En nuestro ejemplo la primera posición es (-) con lo cual el archivo test, es un archivo de datos (binario/ejecutable).

El primer grupo de tres (rwx) nos dice que clase de permisos tiene el dueño del fichero (u)(user/owner).
El segundo grupo de tres (r-x) nos dice que clase de permisos tiene el grupo del fichero (g)(group).
Y el último grupo de tres (---) nos dice que clase de permisos tienen todos los demás usuarios del sistema sobre este
fichero (o)(others).

  • r: significa permiso para leer
  • w: significa permiso para escribir
  • x: significa permiso para ejecutar

La segunda columna pepito, nos dice quien es el dueño del fichero, (usuario pepito).
La tercera columna depart1, nos dice cual es el grupo del fichero (depart1).
La cuarta columna 4348, nos dice el tamaño del fichero.
La quinta columna Nov 24 16:19, nos dice cual es la fecha y hora de la última modificación.
La sexta columna test, nos dice cual es el nombre del fichero/directorio.

Así pues, el fichero test de nuestro ejemplo tiene los siguientes permisos:

  • pepito puede leer, escribir/modificar, y ejecutar el fichero test.
  • Los usuarios pertenecientes al grupo depart1 puede leer, y ejecutar pero no escribir/modificar.
  • Los demás usuarios no pueden leerlo, ni escribir/modificar y tampoco pueden ejecutarlo.

¿Como cambiar los permisos de un fichero/directorio?

Para cambiar el dueño del fichero se utiliza el comando ; ‘chown usuario fichero'.

Para cambiar el grupo del fichero se utiliza el comando; ‘chgrp grupo fichero'.

Para cambiar los permisos se utiliza el comando; ‘chmod permisos fichero'.

  • Con el comando ‘chown usuario fichero’ podemos cambiar el usuario del fichero/directorio y asignarle uno distinto.
  • Con el comando ‘chgrp grupo fichero’ podemos cambiar el grupo del fichero/directorio.
  • Con el comando ‘chmod permisos fichero’ podemos cambiar los permisos de un fichero/directorio.

Los permisos se pueden especificar de diferentes maneras, será fácil entender el proceso de modificación de permisos viendo una serie de ejemplos y con un poco de práctica.

  chmod ugo+rwx test (da permisos rwx a todos, user,group,others)
  chmod ugo-x test (quita permiso x (ejecucion) a todos, user,group,others) 
  chmod o-rwx test (quita permisos rwx a others) 
  chmod u=rwx,g=rx test (da permisos rwx a user, rx a group y ninguno a others) 

Así podríamos continuar con todas las posibles combinaciones de letras pero, con el ejemplo anterior y práctica solo será necesario utilizar la imaginación para comprender que el número de posibilidades no tiene mucho misterio.

Existe otro método que utiliza números, en vez de letras, para asignar permisos, la siguiente tabla nos puede ayudar un poco a comprender esta manera:

  r w x  VALOR DECIMAL
  0 0 0  0 (000 binario es 0 en decimal)
  0 0 1  1  .........
  0 1 0  2  .........
  0 1 1  3  .........
  1 0 0  4 (100 binario es 4 en decimal)
  1 0 1  5  .........
  1 1 0  6  .........
  1 1 1  7 (111 binario es 7 en decimal)

El número 1 significa activado y el número 0 significa lo contrario, es decir, que está desactivado, utilizando el comando ‘chmod 101 fichero/directorio’, se activaría r y x, y se desactivaría w. Sabiendo esto solo tenemos que usar el valor decimal para dar solo permisos de lectura y ejecución, un ejemplo aclarará esto.

  chmod 750 test 
  permisos rwx al usuario (7=111)  
  permisos r-x al grupo (5=101)  
  permisos --- a los demás (0=000)

Hay que perder el miedo a la línea de comandos para modificar los permisos de ficheros/directorios en GNU/Linux según sea necesario y tener así el control del sistema.

Compartir en...Share on FacebookTweet about this on TwitterShare on Google+Email this to someone