Formación informática

Java | Joomla | MySQL

Debian - Tema 9.1.1: cuentas de usuario y archivos

Como sabemos, el sistema GNU/Linux es multiusuario. Por tanto, pueden usarlo a la vez varias personas y éstas tienen que autentificarse para asegurar la confidencialidad de los datos contenidos en las cuentas. De forma predeterminada, los datos contenidos en el directorio /home de cada usuario solo son vistos por su propietario.

Para que los usuarios puedan ver la información creada por otros usuarios, el administrador del sistema tiene que asignarles los permisos adecuados. Estos permisos pueden concederse a usuarios individuales o a un grupo de usuarios con unas características comunes. Aquí nos surgen los dos conceptos fundamentales: cuentas de usuario y grupo de usuarios.

9.1. Cuentas de usuario

La forma de identificar sin lugar a error a cada usuario cada vez que se conecte a nuestro sistema es mediante una cuenta de usuario. Esta se compone, al menos, de un nombre de usuario y una contraseña que hay que introducir para autenticarse correctamente.

En un sistema Linux, los datos que vamos a introducir son un nombre completo, el nombre de identificación en el sistema o login, nombre corto o alias y, obligatoriamente, una contraseña, que tendrá que cumplir las reglas que tengamos establecidas. Las normas por defecto que vienen implementadas en Debian están reflejadas en el fichero /etc/login.defs.

Al registrarse un usuario nuevo, el sistema operativo le asigna un número de identificación de usuario, User’s ID o UID, que es el dato que realmente hace único a un usuario. El resto depende funcionalmente de este dato. A cada usuario se le pueden conceder permisos de forma individual para limitar el acceso a los recursos del ordenador o a los datos contenidos en él.

En un sistema Unix existen tres tipos de usuarios:

  1. Usuarios normales, con más o menos privilegios concedidos. Es el tipo de cuenta que hay que crear para una persona real, el usuario habitual. Además, habrá que asignarles los permisos necesarios y suficientes. Su UID empieza a partir de 1000, en Debian. En otros sistemas GNU/Linux empiezan a partir del 500. Cada usuario dispondrá de un directorio de trabajo en /home y puede personalizar a su gusto el entorno de trabajo.
  1. Usuarios especiales o del sistema: son aquellos encargados de ejecutar los programas en segundo plano, llamados demonios o daemons, concediendo a cada uno los permisos adecuados. Una particularidad es que como nunca van a autentificarse no necesitan que se les asigne un Shell. Su UID oscila entre 1 y 1000, en Debian.
  1. Root o superusuario o usuario administrador del sistema. Este usuario es como Dios, tiene acceso a todos los recursos, dispositivos, periféricos, directorios y archivos del sistema. Por tanto, hay que tener mucho cuidado al acceder al sistema autentificado como usuario root. De hecho, los entornos gráficos no permiten acceder al sistema como este usuario para evitar destrozos del sistema, muy fáciles de hacer a través de las aplicaciones gráficas. Su UID siempre es 0. Puede realizar cualquier tarea sobre el sistema: desde borrar archivos hasta reconfigurar el kernell.

Por tanto, vemos que todo lo que maneja un sistema Unix tiene que tener un propietario definido aunque no todos pueden hacer un login en el sistema. Esto restringe bastante los posibles problemas de seguridad.

9.1.1. Ubicación de los datos de los usuarios

Los datos de autentificación de todos los usuarios se guardan en tres archivos localizados en el directorio etc, que es dónde se almacenan todos los archivos que no tienen cabida en otros subdirectorios; archivos de configuración y scripts de arranque del sistema puedes encontrarlos aquí.

9.1.1.1. Archivo /etc/passwd

ARCHIVOS Y DIRECTORIOS

Este archivo contiene los datos básicos de la cuenta. El contenido de este archivo lo puede ver cualquier tipo de usuario, bien a través de un administrador de archivos gráfico o a través de un terminal usando, por ejemplo, el comando cat.

Cada línea de este archivo caracteriza una cuenta de usuario mediante siete campos que están separados entre sí por dos puntos. Son los siguientes:

  • Nombre o login de usuario. Es el nombre corto que asignamos a un usuario cuando lo creamos.
  • Contraseña, una x la sustituye cuando está encriptada mediante algún algoritmo para proteger los datos o la muestra si no está encriptada.
  • Número de usuario o UID.
  • Número de grupo o GID.
  • Nombre completo o General Electric Comprehensive Operating System o GECOS. La historia de este término puedes encontrarla en la página del manual.
  • Ruta del directorio personal. De forma predeterminada es un directorio alojado en /home.
  • Ruta del Shell asignado.
LINUX-DATOS ETC PASSWD 001

En el siguiente ejemplo vemos los datos guardados en passwd para el usuario josemariatc:

josemariatc:x:1000:1000:Jose Maria Torres Corral,,,:/home/josemariatc:/bin/bash

9.1.1.2. Archivo /etc/shadow

CONTRASEÑA LINUX

Este archivo contiene toda la información relacionada con la contraseña, usando el nombre corto del usuario para relacionarlo. El contenido de este archivo solo es accesible para usuarios con la categoría de root puesto que estamos hablando de temas de seguridad y privacidad de datos. Los campos que describe son:

  • Nombre del usuario.
  • Contraseña cifrada.
  • Días transcurridos desde 1-1-1970 donde la contraseña fue cambiada por última vez.
  • El mínimo número de días entre cambios de contraseña.
  • Días máximos de validez de la cuenta.
  • Días que avisa antes de caducar la contraseña.
  • Días después de que una contraseña ha caducado tras los cuales se deshabilita la cuenta.
  • Fecha de caducidad o días desde 1-1-1970, donde la cuenta es deshabilitada y el usuario no podrá iniciar sesión.
LINUX-DATOS ETC SHADOW 02

En el ejemplo mostrado a continuación vemos los datos guardados para el usuario josemariatc:

josemariatc:$6$ho6U1Urz$89enOiCjs4W7OC8riScwI3utshfaMxbrUjgMwMc2zqqRtDTrJXTypqktr7wOKktzi18uhHP92ELv1.uBtEr1I0:15051:0:99999:7:::

Los principales comandos para administrar los datos del usuario son who, who am i y passwd, todos ellos vistos en el tema 3.

9.1.1.3. /etc/login.defs

Este fichero configura las opciones de login de los usuarios de un sistema GNU/Linux, es un fichero de texto en ASCII y los puntos más interesantes de éste son los siguientes:

* Establecimiento de Logs de control de entradas al sistema

                   FAILLOG_ENAB                     yes

                   LOG_OK_LOGINS                  no

                   LASTLOG_ENAB                    yes

                   SYSLOG_SU_ENAB               yes

                   SYSLOG_SG_ENAB               yes

                   SULOG_FILE   /var/log/sulog

* Comprobación de correo tras autentificarse

                   MAIL_CHECK_ENAB yes

*Restriccion de tiempos (/etc/portime)

                   PORTTIME_CHECKS_ENAB  yes

* Permitir el establecimiento de ulimit, umask & niceness

                   QUOTAS_ENAB                     yes

* Dispositivos desde los que puede hacer login el root (se puede seleccionar con el path de un fichero o con los dispositivos separados por ':')

                   CONSOLE                   /etc/securetty

                   #CONSOLE     console:tty01:tty02:tty03:tty04

                   ejemplo: /etc/securetty

                   # These are the ttys on the physical console:

                   console

                   tty1

                   tty2

                   tty3

                   tty4

                   tty5

                   tty6

* Especificar el fichero de "message of the day", para poner varios ficheros, separar los paths con ':'.El contenido de este fichero de texto se muestra a todos los usuarios tras identificarse.

                   MOTD_FILE    /etc/motd

* Establecer el fichero que se muestra antes del login.        

                   ISSUE_FILE    /etc/issue

* Determinar el fichero /etc/nologin (root es el único q puede acceder al sistema)

                   NOLOGINS_FILE        /etc/nologin

* Este campo es necesario: Directorio donde están los buzones de correo

                   MAIL_DIR       /var/spool/mail

* Establecer los permisos del terminal

                   TTYGROUP     tty

                   TTYPERM       0600

*Establecer las configuraciones de inicialización de...

       ERASECHAR   Terminal ERASE character ('\010' = backspace).

       KILLCHAR       Terminal KILL character ('\025' = CTRL/U).

       UMASK                       Default "umask" value.

       ULIMIT                        Default "ulimit" value.

       Ejemplo:

                   ERASECHAR   0177

                   KILLCHAR       025

                   UMASK           077

                   ULIMIT                        2097152

Una cosa que hay que comentar sobre el UMASK es que puede ser que esté siendo machacado por algún script de login tipo /etc/profiles. Así que, hay que comprobar ese tipo de ficheros a ver si está el comando umask. En ese caso, se aplicará el umask del script ya que se ejecuta después. Cambia los permisos del umask o comenta esa línea en el script.

Otra cosa importante de cara al umask es a la hora de realizar instalaciones. Recuerda que si pones 077 como máscara los permisos serán 700 en todos los ficheros nuevos. En las instalaciones de nuevos programas es recomendable cambiar las mascara a 022 (activa permisos 755), para hacerlo utiliza el comando "umask 022". Si luego quieres restringir el acceso a esos ficheros cambia los permisos a éstos.

*Validez temporal de los passwords

       PASS_MAX_DAYS      Número máximo de día en el que la contraseña va a ser usada

       PASS_MIN_DAYS      Número mínimo de días permitido entre el cambio de contraseñas.

       PASS_MIN_LEN        Longitud mínima de la contraseña válida.

       PASS_WARN_AGE     Aviso con número de días que faltan antes de que la contraseña expire.

       Ejemplo:

                   PASS_MAX_DAYS      99999

                   PASS_MIN_DAYS      0

                   PASS_MIN_LEN        8

                   PASS_WARN_AGE     7

* Una de las opciones de seguridad importante es:

                   SU_WHEEL_ONLY     yes

Si está a yes, entonces sólo los usuarios que pertenezcan al grupo del root (gid 0 *). En mi opinión es casi obligatoria tenerla activada. De esta forma aseguramos la integridad del sistema operativo.

* Selección de los uid y gid mínimos y máximos que se utilizarán en el comando de añadir usuarios  'useradd'

                   UID_MIN                  1000

                   UID_MAX                 60000

                   GID_MIN                   100

                   GID_MAX                 60000

* Algunas opciones sobre el login:

    # Número máximo de reintentos al introducir una contraseña errónea. Un número que oscile entre uno y tres es muy buen valor porque garantiza que no haya muchos reintentos inválidos de conexión.

                   LOGIN_RETRIES           3

# Tiempo máximo para autentificarse:

                   LOGIN_TIMEOUT           60

# Máximo número de intentos para cambiar la contraseña si es rechazada:

                   PASS_CHANGE_TRIES       5

                   # Aviso sobre contraseñas débiles.

                   PASS_ALWAYS_WARN        yes

                   # Number of significant characters in the password for crypt().

                   # Default is 8, don't change unless your crypt() is better.

                   # Ignored if MD5_CRYPT_ENAB set to "yes".

                   #PASS_MAX_LEN           20

       #Esto sólo funciona si está compilado con la opción de usar el algoritmo  MD5. El md5 soporta claves de longitud ilimitada. Desactívalo si usas otros sistemas que no soporten este algoritmo.

                   MD5_CRYPT_ENAB  yes   

* Opciones del Comando CHFN (Ver punto 'Cambiando la información de los usuarios con chfn')

                   CHFN_AUTH               yes

# Aquí se definen los campos que un usuario puede cambiar cuando se ejecuta el chfn. Se hace mediante el uso de la primera letra de cada parámetro modificable "frwh"(full name para el nombre completo, room number para el número de habitación o despacho, work pone para el número de teléfono del trabajo, home pone para el número de teléfono de casa).  Si no definimos nada, entonces no se permite ningún cambio. Para tener retro-compatibilidad hay que escribir "yes" = "rwh" and "no" = "frwh".

                   CHFN_RESTRICT           frwh

*Algunas cosas más:

#Si activas lo siguiente un usuario podrá acceder a los recursos de los siguientes grupos. Por defecto está desactivado, y yo lo dejaría así

       #CONSOLE_GROUPS         floppy:audio:cdrom     

#Si está definido, cuando borres un usuario se ejecutará el que está ahí definido. Este programa debería borrar las entradas de cron/at,etc... Lo más normal es que lo codifiques en un shell_script.

#USERDEL_CMD    /usr/sbin/userdel_local  

  ## Si está definido no solicitará passwords para los usuarios hagan login desde estas consolas excepto al root. Es conveniente tenerlo desactivado

       #NO_PASSWORD_CONSOLE tty1:tty2:tty3:tty4:tty5:tty6

#La siguiente opción es interesante: sirve para indicar el número máximo  de asteriscos por carácter que aleatoriamente aparecerán cuando teclees el password. Por defecto está a -1, si está a 1 saldrá un asterisco por carácter pulsado pones otro número saldrán hasta ese número

#GETPASS_ASTERISKS 1  

#Esto sirve desconcertar a todos aquellos que miran lo que escribes al teclear el password la siguiente opción sirve para poner los bits de permisos de grupo    igual a los bits de permiso del usuario.Yo creo que se debe de poner           que no, si un usuario compartir ficheros que cambie los permisos con chmod, pero puede haber situaciones en las que si que haya que activarlo.

       USERGROUPS_ENAB no

Debian - Tema 8.3: ejercicios resueltos <- | ->   Debian Tema 9.1.2: comandos de administración de usuarios
   GNU/Linux - Temario

Escribir un comentario

Aunque los comentarios no expresan la opinión del administrador del sitio web, éste si que tiene una responsabilidad legal sobre lo que aparece. Por lo tanto, habrá una labor de moderación de los mensajes. No se permitirán mensajes ofensivos ni publicidad


Código de seguridad
Refescar

Solicitamos su permiso para obtener datos estadísticos de su navegación en esta web, en cumplimiento del Real Decreto-Ley 13/2012, de 30 de marzo. Si continúa navegando consideramos que acepta el uso de cookies. . Más información