6.3. Información específica a Red Hat Enterprise Linux

Las secciones siguientes describen las diferentes funcionalidades específicas a Red Hat Enterprise Linux que se relacionan con la administración de cuentas de usuarios y recursos asociados.

6.3.1. Cuentas de usuarios, Grupos y Permisos

Bajo Red Hat Enterprise Linux, un usuario puede iniciar una sesión en un sistema y utilizar cualquier aplicación o archivos a los cuales tengan permiso de acceso después de crear una cuenta de usuario normal. Red Hat Enterprise Linux determina si un usuario o grupo puede acceder estos recursos basado en los permisos asignados a ellos.

Existen tres tipos diferentes de permisos para archivos, directorios y aplicaciones. Estos permisos son utilizados para controlar los tipos de acceso permitido. Se utilizan diferentes símbolos de un carácter para describir cada permiso en un listado de directorio. Se usan los siguientes símbolos:

Un cuarto símbolo (-) indica que no se permite ningún acceso.

Cada uno de estos tres permisos son asignados a tres categorías diferentes de usuarios. Las categorías son:

Como se indicó anteriormente, es posible ver los permisos para un archivo invocando un listado de directorios largo con el comando ls -l. Por ejemplo, si el usuario juan crea un archivo ejecutable llamado foo, la salida del comando ls -l foo sería así:

-rwxrwxr-x    1 juan     juan            0 Sep 26 12:25 foo

Los permisos para este archivo se listan al principio de la línea, comenzando con rwx. El primer conjunto de símbolos define el acceso del dueño - en este ejemplo, el dueño juan tiene acceso completo y puede leer, escribir y ejecutar el archivo. El próximo conjunto de símbolos rwx define el acceso de grupo (una vez más, con acceso completo), mientras que el último conjunto de símbolos define el tipo de acceso permitido para todos los demás usuarios. Aquí, todos los otros usuarios pueden leer y ejecutar el archivo, pero no pueden modificarlo de ninguna forma.

Otro aspecto importante a tener en mente con relación a los permisos y a las cuentas de usuarios es que cada aplicación ejecutada en Red Hat Enterprise Linux se ejecuta en el contexto de un usuario específico. Típicamente, esto significa que si el usuario juan lanza una aplicación, la aplicación se ejecuta usando el contexto de juan. Sin embargo, en algunos casos la aplicación puede necesitar un nivel de acceso más privilegiado para poder realizar la tarea. Tales aplicaciones incluyen aquellas que modifican los parámetros del sistema o que conectan usuarios. Por esta razón, se deben crear permisos especiales.

Hay tres tipos de permisos especiales dentro de Red Hat Enterprise Linux. Ellos son:

6.3.1.1. Nombres de usuarios y UIDs, Grupos y GIDs

En Red Hat Enterprise Linux, los nombres de cuentas de usuarios y grupos son principalmente para la conveniencia de la gente. Internamente, el sistema utiliza identificadores numéricos. Para los usuarios este identificador se conoce como un UID, mientras que para los grupos se conoce como GID. Los programas que hacen disponibles la información de usuarios o grupos para los usuarios, traducen los valores de UID/GID a sus equivalentes más legibles para el usuario.

ImportanteImportante
 

Los UIDs y los GIDs deben ser globalmente únicos dentro de su organización si pretende compartir archivos y recursos sobre la red. De lo contrario, cualquier control de acceso que implemente no funcionará correctamente pues estan basados en UIDs y GIDs, no en nombres de usuarios y de grupos.

Específicamente, si los archivos /etc/passwd y /etc/group en un servidor de archivos y en la estación de trabajo de un usuario son diferentes en los UIDs o GID que contienen, la aplicación inadecuada de permisos puede llevar a problemas de seguridad.

Por ejemplo, si el usuario juan tiene un UID de 500 en un computador de escritorio, los archivos que juan cree en un servidor de archivos se crearán con un propietario de UID 500. No obstante, si el usuario bob inicia una sesión en el servidor de archivos (o en otro computador), y la cuenta de bob también tiene un UID de 500, bob tendrá acceso completo a los archivos de juan y viceversa.

Por lo tanto, se deben evitar las colisiones de UID y GID a toda costa.

Hay dos instancias donde el valor numérico real de un UID o GID tiene un significado específico. El UID o GID de cero (0) se utiliza para el usuario root y se tratan de forma especial por Red Hat Enterprise Linux — automáticamente se le otorga acceso completo.

La segunda situación es que los UIDs y los GIDs por debajo de 500 se reservan para el uso del sistema. A diferencia de UID/GID cero (0), los UIDs y GIDs por debajo de 500 no son tratados de forma especial por Red Hat Enterprise Linux. Sin embargo, estos UIDs/GIDs nunca son asignados a un usuario, pues es posible que algunos componentes de sistemas utilicen o utilizaran alguno de estos UIDs/GIDs en algún momento. Para más información sobre estos usuarios y grupos estándar, consulte el capítulo llamado Usuarios y Grupos en el Manual de referencia de Red Hat Enterprise Linux.

Cuando se añaden nuevas cuentas de usuario usando las herramientas estándar de Red Hat Enterprise Linux, a las nuevas cuentas de usuario se les asigna el primer UID y GID disponible comenzando por 500. La próxima cuenta de usuario se le asignará un UID/GID de 501, seguido de UID/GID 502 y así sucesivamente.

Más adelante en este capítulo se hace una breve descripción de las herramientas disponibles bajo Red Hat Enterprise Linux para la creación de usuarios. Pero antes de revisar estas herramientas, la sección siguiente revisa los archivos que Red Hat Enterprise Linux utiliza para definir cuentas y grupos del sistema.

6.3.2. Archivos que controlan Cuentas de Usuarios y Grupos

En Red Hat Enterprise Linux la información sobre cuentas de usuarios y grupos es almacenada en varios archivos de texto dentro del directorio /etc/. Cuando un administrador del sistema crea una nueva cuenta de usuario, estos archivos deben ser editados manualmente o se deben usar las aplicaciones para hacer los cambios necesarios.

La sección siguiente documenta los archivos en el directorio /etc/ que almacenan información de usuarios y grupos bajo Red Hat Enterprise Linux.

6.3.2.1. /etc/passwd

El archivo /etc/passwd es un archivo legible por todo el mundo y contiene y una lista de usuarios, cada uno en una línea separada. En cada línea hay una lista delimitada por dos puntos (:) conteniendo la información siguiente:

  • Nombre de usuario — El nombre que el usuario escribe cuando se conecta al sistema.

  • Contraseña — Contiene la contraseña encriptada (o una x si se utilizan contraseñas shadow - más detalles sobre esto enseguida).

  • ID del usuario (UID) — El equivalente numérico del nombre de usuario el cual es referenciado por el sistema y las aplicaciones cuando se determinan los privilegios de acceso.

  • ID de Grupo (GID) — El equivalente numérico del nombre principal de grupo que utiliza el sistema y las aplicaciones para referenciar el grupo cuando se determinan los privilegios de acceso.

  • GECOS — Nombrado por razones históricas, el campo GECOS[1] es opcional y se utiliza para almacenar información adicional (tal como el nombre completo del usuario). Se pueden almacenar múltiples entradas en este campo, en una lista limitada por comas. Las utilidades como finger acceden a este comando para proporcionar información adicional del usuario.

  • Directorio principal — La ruta absoluta al directorio principal del usuario, tal como /home/juan/.

  • Shell — El programa lanzado automáticamente cada vez que un usuario se conecta. Usualmente es un intérprete de comandos (a menudo llamado shell). Bajo Red Hat Enterprise Linux, el valor por defecto es /bin/bash. Si se deja este campo en blanco, se utilizará /bin/sh. Si se deja a un archivo que no existe, entonces el usuario no podrá conectarse al sistema.

He aquí un ejemplo de una entrada en /etc/passwd:

root:x:0:0:root:/root:/bin/bash

Esta línea muestra que el usuario root tiene una contraseña shadow, así como también un UID y GID de 0. El usuario root tiene /root/ como directorio principal y utiliza /bin/bash como intérprete de comandos.

Para más información sobre /etc/passwd, consulte la página man de passwd(5).

6.3.2.2. /etc/shadow

Debido a que el archivo /etc/passwd debe ser legible por todo el mundo (la razón principal es que este archivo se utiliza para llevar a cabo la traducción del UID al nombre de usuario), hay un riesgo relacionado en almacenar las contraseña de todo el mundo en /etc/passwd. Cierto, las contraseñas estan encriptadas. Sin embargo, es posible realizar ataques contra contraseñas si las contraseñas encriptada están disponibles.

Si un atacante puede obtener una copia de /etc/passwd, este puede llevar a cabo un ataque en secreto. En vez de arriesgar la detección teniendo que intentar un inicio de sesión con cada contraseña potencial generada por un descifrador de contraseñas, el atacante puede utilizar un descifrador de contraseñas de la forma siguiente:

  • Un descifrador de contraseñas genera una contraseña potencial

  • Cada contraseña potencial es encriptada utilizando el mismo algoritmo que utiliza el sistema

  • La contraseña potencial encriptada es comparada con las contraseñas encriptadas en /etc/passwd

El aspecto más peligroso de este ataque es que puede ocurrir en un sistema muy lejos de su organización. Debido a esto, el atacante puede utilizar hardware con el más alto rendimiento disponible, haciendo posible pasar a través de números masivos de contraseñas rápidamente.

Por esta razón, el archivo /etc/shadow solamente está disponible por el usuario root y contiene contraseñas (e información opcional de caducidad) para cada usuario. Como en el archivo /etc/passwd, cada información de usuario está en una línea separada. Cada una de estas líneas es una lista delimitada por dos puntos (:) incluyendo la información siguiente:

  • Nombre de usuario — El nombre que el usuario escribe cuando se conecta al sistema. Esto permite que la aplicación login de inicio de sesión, recupere la contraseña del usuario (y la información relacionada).

  • Contraseña encriptada — La contraseña encriptada con 13 a 24 carácteres. La contraseña es encriptada usando bien sea la biblioteca de funciones crypt(3) o el algoritmo de hash md5. En este campo, los valores diferentes a una contraseña encriptada o en hash, se utilizan para controlar la conexión del usuario y para mostrar el status de la contraseña. Por ejemplo, si el valor es ! o *, la cuenta es bloqueada y al usuario no se le permite conectarse. Si el valor es !!, nunca se ha establecido una contraseña (y el usuario, como no ha establecido una contraseña, no se podrá conectar).

  • Ultima fecha en que se cambió la contraseña — El número de días desde el 1 de enero, 1970 (también conocido como epoch) en que la fecha fue modificada. Esta información es utilizada en conjunto con los campos de caducidad de la contraseña.

  • Número de días antes de que la contraseña debe ser modificada — El número mínimo de días que deben pasar antes de que la contraseña se pueda cambiar.

  • Número de días antes de que se requiera un cambio de contraseña — El número de días que deben pasar antes de que se deba cambiar la contraseña.

  • Número de días de advertencia antes de cambiar la contraseña — El número de días antes que el usuario es notificado de que la contraseña vá a expirar.

  • Número de días antes de desactivar la contraseña — El número de días después que una contraseña expira antes de desactivar la cuenta.

  • Fecha desde que la cuenta fue desactivada — La fecha (almacenada como el número de días desde epoch) desde que la cuenta del usuario ha sido desactivada.

  • Un campo reservado — Un campo que es ignorado en Red Hat Enterprise Linux.

He aquí un ejemplo de una línea de /etc/shadow:

juan:$1$.QKDPc5E$SWlkjRWexrXYgc98F.:12825:0:90:5:30:13096:

Esta línea muestra la información siguiente para el usuario juan:

  • La última vez que se cambió la contraseña fue el 11 de febrero, 2005

  • No hay in mínimo de tiempo requerido antes de que la contraseña debe ser cambiada

  • La contraseña se debe modificar cada 90 días

  • El usuario recibirá una notificación cinco días antes de que la contraseña deba ser modificada

  • La cuenta será desactivada 30 días después que expire la contraseña si no se realiza ninguna conexión

  • La cuenta caduca el 9 de noviembre del 2005

Para más información sobre el archivo /etc/shadow, consulte la página man shadow(5).

6.3.2.3. /etc/group

El archivo /etc/group es un archivo legible por todo el mundo y contiene una lista de los grupos, cada uno en una línea separada. Cada línea es una lista de cuatro campos, delimitados por dos puntos (:) que incluye la información siguiente:

  • Nombre del grupo — El nombre del grupo. Utilizado por varios programas de utilidades como un identificador legible para el grupo.

  • Contraseña de grupo — Si se configura, esto permite a los usuarios que no forman parte del grupo a unirse a el usando el comando newgrp y escribiendo la contraseña almacenada aquí. Si hay una x minúscula en este campo, entonces se están usando contraseñas shadow.

  • ID del grupo (GID) — El equivalente numérico del nombre del grupo. Lo utilizan el sistema operativo y las aplicaciones para determinar los privilegios de acceso.

  • Lista de miembros — Una lista delimitada por comas de los usuarios que pertenecen al grupo.

He aquí una línea de ejemplo de /etc/group:

general:x:502:juan,shelley,bob

Esta línea muestra que el grupo general está utilizando contraseñas shadow, tiene un GID de 502, y que juan, shelley y bob son miembros.

Para más información sobre /etc/group, consulte la página man de group(5).

6.3.2.4. /etc/gshadow

El archivo /etc/gshadow es un archivo legible solamente por el usuario root y contiene las contraseñas encriptadas para cada grupo, así como también información de los miembros del grupo y de administración. De la misma forma que en el archivo /etc/group, cada información de grupos está en una línea separada. Cada una de estas líneas es una lista delimitada por símbolos de dos puntos (:) incluyendo la información siguiente:

  • Nombre del grupo — El nombre del grupo. Utilizado por varios programas de utilidades como un identificador legible para el grupo.

  • Contraseña encriptada — La contraseña encriptada para el grupo. Si está configurada, los que no sean miembros del grupo pueden unirse a este escribiendo la contraseña para ese grupo usando el comando newgrp. Si el valor de este campo es !, entonces ningún usuario tiene acceso al grupo usando el comando newgrp. Un valor de !! se trata de la misma forma que un valor de ! — sin embargo, también indica que nunca se ha establecido una contraseña para el grupo. Si el valor en nulo, solamente los miembros del grupo pueden conectarse al grupo.

  • Administradores del grupo — Los miembros del grupo listados aquí (en una lista delimitada por comas) pueden añadir o eliminar miembros del grupo usando el comando gpasswd.

  • Miembros del grupo — Los miembros del grupo listados aquí (en una lista delimitada por comas), son miembros normales, no administrativos, del grupo.

He aquí una línea de ejemplo de /etc/gshadow:

general:!!:shelley:juan,bob

Esta línea muestra que el grupo general no tiene contraseña y no permite a los no miembros a unirse al grupo usando newgrp. Además, shelley es el administrador del grupo y juan y bob son miembros normales, no administrativos.

Puesto que la edición manual de estos archivos incrementa las posibilidades de errores sintácticos, se recomienda que se utilicen las aplicaciones suministradas con Red Hat Enterprise Linux para este propósito. La sección siguiente revisa las herramientas principales para realizar estas tareas.

6.3.3. Aplicaciones para Cuentas de Usuarios y Grupos

Hay dos tipos básicos de aplicaciones que se pueden utilizar cuando se administran cuentas de usuarios y grupos en sistemas Red Hat Enterprise Linux:

Para ver las instrucciones detalladas sobre el uso de Administrador de usuarios, revise el capítulo llamado Configuración de Usuarios y Grupos en el Manual de administración del sistema de Red Hat Enterprise Linux.

Mientras que tanto la aplicación Administrador de usuarios y las utilidades de línea de comandos esencialmente ejecutan la misma tarea, las herramientas de línea de comandos tienen la ventaja de ser de tipo script y por lo tanto más fáciles de automatizar.

La tabla siguiente describe algunas de las herramientas de línea de comandos más utilizadas para crear y administrar cuentas de usuarios y grupos:

AplicaciónFunción
/usr/sbin/useraddAñade cuentas de usuarios. Esta herramienta también es utilizada para especificar membrecias primaria y secundarias a grupos.
/usr/sbin/userdelElimina cuentas de usuarios.
/usr/sbin/usermodModifica los atributos de las cuentas incluyendo algunas funciones relacionadas a la expiración de contraseñas. Para un control más refinado, utilice el comando passwd. También se utiliza usermod para especificar membrecias de grupos primaria y secundaria.
passwdConfigura una contraseña. Aunque se utiliza principalmente para modificar la contraseña de un usuario, esta también puede controlar todos los aspectos de la expiración de contraseñas.
/usr/sbin/chpasswdLee un archivo que consiste de pares de nombres de usuarios y contraseñas, y actualiza cada contraseña de usuario de acuerdo a este.
chageCambia las políticas de envejecimiento de contraseñas. También se puede utilizar el comando passwd para este propósito.
chfnCambia la información GECOS de un usuario.
chshCambia el intérprete de comandos por defecto de un usuario.

Tabla 6-2. Herramientas de línea de comandos para la Administración de Usuarios

La tabla siguiente describe algunas de las herramientas de línea de comandos más comunes utilizadas para crear u administrar grupos:

AplicaciónFunción
/usr/sbin/groupaddAñade grupos, pero no asigna usuarios a estos grupos. Se deben utilizar los programas useradd y usermod para asignar usuarios a un grupo dado.
/usr/sbin/groupdelElimina grupos.
/usr/sbin/groupmodModifica nombres de grupos o GIDs, pero no cambia la membrecia del grupo. Se tiene que utilizar useradd y usermod para asignar usuarios a un grupo determinado.
gpasswdCambia la membrecia de un grupo y configura contraseñas para permitir a los usuarios que no sean miembro que conocen la contraseña, unirse al grupo. También se utiliza para especificar administradores de grupos.
/usr/sbin/grpckVerifica la integridad de los archivos /etc/group y /etc/gshadow.

Tabla 6-3. Herramientas de línea de comandos para Administrar Grupos

Las herramientas listadas proporcionan gran flexibilidad a los administradores de sistemas para controlar todos los aspectos de las cuentas de usuarios y grupos. Para conocer aún más sobre su funcionamiento, consulte sus páginas del manual.

Sin embargo, estas aplicaciones no determinan sobre qué recursos estos usuarios y grupos tienen control. Para esto, el administrador del sistema debe utilizar aplicaciones de permisos de archivos.

6.3.3.1. Aplicaciones de Permisos de Archivos

Los permisos de archivos son una parte integral del manejo de recursos dentro de una organización. La tabla siguiente describe algunas de las herramientas de línea de comandos más comunes para este propósito.

AplicaciónFunción
chgrpCambia el grupo que posee un archivo.
chmodCambia los permisos de acceso para un archivo dado. Es capaz de asignar permisos especiales.
chownCambia la propiedad de un archivo (y también puede cambiar el grupo).

Tabla 6-4. Herramientas de línea de comandos para la Administración de Permisos

También es posible alterar estos atributos en los entornos gráficos GNOME y KDE. Pulse con el botón derecho sobre el ícono de un archivo (por ejemplo, mientras se muestra el ícono en un administrador de archivos gráfico o en el escritorio), y seleccione Propiedades.

Notas

[1]

GECOS viene de General Electric Comprehensive Operating Supervisor. Este campo fue utilizado en Bell Labs, en la implementación original de UNIX. El laboratorio tenia muchas computadoras diferentes, incluyendo una ejecutando GECOS. Este campo se utilizó para almacenar información cuando el sistema UNIX enviaba trabajos por lotes o de impresión al sistema GECOS.