3.2. Usuarios y permisos de acceso

Desde su inicio a principios de 1990, Linux se ha desarrollado como un sistema multiusuario. Puede trabajar en él cualquier número de usuarios a la vez. Los usuarios tienen que iniciar la sesión en el sistema antes de iniciarla en sus estaciones de trabajo. Cada usuario tiene un nombre asignado y la contraseña correspondiente. Esta diferenciación de usuarios garantiza que usuarios no autorizados no puedan ver archivos para los que no tienen permiso. De igual modo, los usuarios normales tampoco pueden realizar cambios importantes en el sistema (como la instalación de nuevos programas) o tienen restringida la capacidad de realizarlos. Sólo el usuario Root, o súperusuario, tiene una capacidad sin restricciones para realizar cambios al sistema y cuenta con acceso ilimitado a todos los archivos. Los usuarios que utilicen esta capacidad prudentemente iniciando sesión solamente con acceso completo de usuario Root cuando sea necesario, podrán reducir el riesgo de pérdida no intencionada de datos. Debido a que en circunstancias normales sólo el usuario Root puede suprimir archivos de sistema o dar formato a los discos duros, la amenaza de troyanos o la introducción accidental de comandos destructivos puede reducirse significativamente.

3.2.1. Permisos del sistema de archivos

Fundamentalmente, cada archivo de un sistema de archivos Linux pertenece a un usuario o a un grupo. Tanto estos grupos exclusivos como todos los demás pueden tener autorización para modificar, leer o ejecutar estos archivos.

Un grupo, en este caso, puede definirse como un conjunto de usuarios conectados con algunos derechos colectivos. Por ejemplo, supongamos que llamamos a un grupo que trabaja en un proyecto concreto el nombre de proyecto3. Cada usuario de un sistema Linux pertenece al menos a un grupo exclusivo, normalmente users. Puede haber tantos grupos como necesite un sistema pero sólo el usuario Root puede añadirlos. Todos los usuarios pueden emplear el comando groups para averiguar a qué grupo pertenecen.

Acceso a archivos

La organización de permisos en el sistema de archivos difiere para archivos y directorios. La información de los permisos de archivos puede mostrarse con el comando ls -l. La salida podría ser parecida al Ejemplo 3.1, “Salida de muestra en la que aparecen los permisos de archivos”.

Ejemplo 3.1. Salida de muestra en la que aparecen los permisos de archivos

-rw-r----- 1 tux proyecto3 14197 Jun 21  15:03 Roadmap

Tal y como se muestra en la tercera columna, este archivo pertenece al usuario tux. Está asignado al grupo proyecto3. Para descubrir los permisos de usuario del archivo Roadmap, hay que examinar la primera columna con detenimiento.

-

rw-

r--

---

Tipo

Permisos de usuarios

Permisos de grupo

Permisos para otros usuarios

Esta columna consiste en un carácter inicial seguido de nueve caracteres agrupados en árboles. La primera de las diez letras representa el tipo del componente del sistema de archivos. El guión () indica que es un archivo. También se podría indicar un directorio (d), un enlace (l), un dispositivo de bloque (b) o un dispositivo de caracteres.

Los siguientes tres bloques siguen un patrón estándar. Los primeros tres caracteres indican si el archivo es legible (r) o no (–). Una w en la parte intermedia simboliza que el objeto correspondiente puede editarse y un guión (–) significa que no es posible escribir en el archivo. Una x en la tercera posición indica que el objeto puede ejecutarse. Debido a que el archivo de este ejemplo es un archivo de texto y no un ejecutable, no es necesario el acceso ejecutable para este archivo en concreto.

En este ejemplo, tux tiene, como propietario del archivo Roadmap, acceso de lectura (r) y escritura (w) a él, pero no puede ejecutarlo (x). Los miembros del grupo proyecto3 pueden leer el archivo pero no pueden modificarlo ni ejecutarlo. Los otros usuarios no cuentan con ningún acceso a este archivo. Los otros permisos se pueden asignar por medio de las ACL (listas de control de acceso).

Permisos de directorios

Los permisos de acceso para directorios tienen el tipo d. En el caso de directorios, los permisos individuales tienen un significado ligeramente distinto.

Ejemplo 3.2. Salida de muestra en el que aparecen los permisos de directorios

drwxrwxr-x 1 tux proyecto3 35 Jun 21 15:15  ProjectData

En el Ejemplo 3.2, “Salida de muestra en el que aparecen los permisos de directorios”, el propietario (tux) y el grupo (proyecto3) que posee el directorio ProjectData son fáciles de reconocer. A diferencia de los permisos de acceso a los archivos de Acceso a archivos , el permiso de lectura definido (r) significa que los contenidos del directorio pueden mostrarse. El permiso de escritura (w) significa que se pueden crear nuevos archivos. El permiso ejecutable (x) significa que el usuario puede cambiar a este directorio. En el ejemplo anterior, el usuario tux además de los miembros del grupo proyecto3 pueden cambiar al directorio ProjectData (x), ver los contenidos (r) y añadir o suprimir archivos (w). Al resto de los usuarios, por otra parte, se les ha otorgado un nivel de acceso inferior. Pueden entrar en el directorio (x) y examinarlo (r), pero no insertar ningún nuevo archivo (w).

3.2.2. Modificación de los permisos de archivo

Cambio de los permisos de acceso

Tanto el propietario como, por supuesto, el usuario Root pueden cambiar los permisos de acceso de un archivo o directorio con el comando chmod seguido por los parámetros que cambian los permisos además de uno o varios nombres de archivos. Los parámetros forman distintas categorías:

  1. Respecto a los usuarios

    • u (usuario): propietario del archivo

    • g (grupo): grupo al que pertenece el archivo

    • o (otros): usuarios adicionales (si no hay ningún parámetro, los cambios se aplicarán a todas las categorías)

  2. Un carácter que suprimir (–), ajuste (=) o inserción (+)

  3. Las abreviaturas

    • r: leer

    • w: escribir

    • x: ejecutar

  4. Nombre o nombres de archivo separados por espacios

Si, por ejemplo, el usuario tux en el Ejemplo 3.2, “Salida de muestra en el que aparecen los permisos de directorios” también desea conceder a otros usuarios acceso de escritura (w) al directorio ProjectData, puede hacerlo mediante el comando chmod o+w ProjectData.

Si, por el contrario, desea denegar a todos los usuarios excepto a sí mismo los permisos de escritura, puede hacerlo introduciendo el comando chmod go-w ProjectData. Para prohibir a todos los usuarios que puedan añadir un archivo nuevo a la carpeta ProjectData, introduzca chmod -w ProjectData. Ahora, ni siquiera el propietario podrá escribir en el archivo sin tener que restablecer primero los permisos de escritura.

Cambio de los permisos de propiedad

Otros comandos importantes para controlar la propiedad y permisos de los componentes del sistema de archivos son chown (cambiar propietario) y chgrp (cambiar grupo). Se puede usar el comando chown para transferir la propiedad de un archivo a otro usuario. Sin embargo, sólo el usuario Root tiene permiso para realizar este cambio.

Supongamos que el archivo Roadmap del Ejemplo 3.2, “Salida de muestra en el que aparecen los permisos de directorios” ya no pertenece a tux, sino al usuario geeko. El usuario Root debería introducir chown geeko Roadmap.

chgrp cambia la propiedad del grupo del archivo. Sin embargo, el propietario del archivo debe ser un miembro del grupo nuevo. De este modo, el usuario tux del Ejemplo 3.1, “Salida de muestra en la que aparecen los permisos de archivos” puede cambiar el grupo al que pertenece el archivo ProjectData a proyecto4 mediante el comando chgrp proyecto4 ProjectData, mientras sea un miembro de este nuevo grupo.