Manual introductorio Universitat Oberta de Catalunya
GNU/Linux Manual introductorio

El sistema de seguridad de archivos

gmmd

En un sistema multiusuario como Linux es muy importante establecer mecanismos de seguridad de los ficheros para controlar quién puede acceder a ellos y que tipos de acceso puede llevar a cabo. Por ejemplo, si intentamos eliminar el directorio personal del usuario ‘ec2-user’ obtendremos un mensaje de error:

$ rmdir /home/ec2-user
rmdir: failed to remove '/home/root': Permision denied

Evidentemente sería muy arriesgado permitir que cualquier usuario pudiera realizar una acción que perjudicara al funcionamiento del sistema o al trabajo de otros usuarios. Pero el sistema de seguridad también tiene que tener en cuenta la organización de los usuarios en grupos de Linux que permite compartir ficheros y directorios entre distintos usuarios. Seguidamente veremos los mecanismos que ofrece el sistema para solucionar estos aspectos.

Tipos de permisos

El sistema de permisos de Linux que se aplica a cada fichero o directorio divide los usuarios en tres categorías:

  • Propietario: Usuario que creó el fichero (aunque puede ser otro si ha sido modificado por algún usuario con los privilegios suficientes).
  • Grupo al que pertenece el fichero (inicialmente el del propietario).
  • Otros: resto de usuarios distintos del propietario y los miembros de su grupo.

Para cada fichero y cada una de estas categorías, es posible establecer tres tipos de permisos:

  • Lectura: Para un fichero determina si podemos visualizarlo. Para un directorio, si podemos visualizar su contenido.
  • Escritura: Para un fichero determina si podemos modificarlo, eliminarlo o cambiarlo de nombre. Para un directorio indica lo mismo pero afecta también a su contenido.
  • Ejecución: Para un fichero determina si podemos ejecutarlo. Para un directorio, indica si podemos entrar en él y ejecutar su contenido.

El conjunto de todas las combinaciones posibles forma lo que denominamos la máscara de permisos de un fichero como muestra la siguiente figura:

Permisos

Para visualizar el conjunto de permisos de un fichero podemos utilizar el comando ls con la opción -l. Por ejemplo, veamos los permisos del directorio personal del usuario ‘ec2-user’ (añadimos también la opción d para listar el directorio y no el contenido del directorio):

$ ls -ld /home/ec2-user
drwx------    3 ec2-user     ec2-user        4096  2003-01-26 02:05  /home/ec2-user

La primera cadena de caracteres contiene el tipo de fichero (la ‘d’ indica que es un directorio) y los permisos actuales. Cuando aparece un guión, significa que el permiso no está activado. Seguidamente se indica el tamaño, el propietario y el grupo al que pertenece. Como vemos, sólo el propietario tiene permisos de escritura, que son los que nos permitirían eliminar el directorio. Como el propietario es ‘ec2-user’, sólo este usuario puede hacerlo.