Administración de usuarios en Centos 7

Por: Carlos A. Leal S.

Basado en: https://www.linuxtotal.com.mx/index.php?cont=info_admon_008

Linux es un sistema multi-usuario, donde la administración de usuarios (añadir, modificar, eliminar, asignar permisos) se convierte en algo importante y un elemento básico de seguridad.

Tipos de usuarios

En Linux  a cada usuario se le asigna un número de identificación, en inglés User ID o simplemente UID. Todos los usuarios también pertenecen a grupos, cada grupo se identifica con un número único de grupo, Group ID, GID. Todos los usuarios pueden pertenecer a más grupos. En algunas distribuciones de Linux, cuando se crea un usuario, también se crea un grupo único para ese usuario.

Aunque sujeto a cierta polémica, es posible identificar tres tipos de usuarios en Linux:

Usuario root

  • También llamado superusuario o administrador.
  • Su UID (User ID) es 0 (cero).
  • Es la única cuenta de usuario con privilegios sobre todo el sistema.
  • Acceso total a todos los archivos y directorios con independencia de propietarios y permisos.
  • Controla la administración de cuentas de usuarios.
  • Ejecuta tareas de mantenimiento del sistema.
  • Puede detener el sistema.
  • Instala software en el sistema.
  • Puede modificar o reconfigurar el kernel, controladores, etc.

Usuarios especiales – Cuentas del sistema

  • Ejemplos: bin, daemon, adm, lp, sync, shutdown, mail, operator, squid, apache, etc.
  • Por motivos de seguridad no tiene todos los privilegios del usuario root, pero pueden asumen algunos privilegios de root.
  • No tienen contraseñas, son cuentas que no están diseñadas para iniciar sesión.
  • También se les conoce como cuentas de «no inicio de sesión» (nologin).
  • Se crean (generalmente) automáticamente al momento de la instalación
  • Generalmente se les asigna un UID entre 1 y 100 (según lo definido en /etc/login.defs).

Usuarios normales

  • Se usan para usuarios individuales (personas)
  • Cada usuario dispone de un directorio de trabajo, ubicado generalmente en /home.
  • Cada usuario puede personalizar su entorno de trabajo.
  • Tienen solo privilegios completos en su directorio de trabajo o HOME.
  • En las distros actuales de Linux se les asigna generalmente un UID superior a 500.

/etc/passwd

Sin importar el tipo de usuario, todas las cuentas se encuentran definidas en el archivo de configuración ‘passwd’, ubicado dentro del directorio /etc. Este archivo es de texto tipo ASCII, se crea al momento de la instalación con el usuario root y las cuentas especiales, más las cuentas de usuarios normales que se hayan indicado al momento de la instalación.

El contenido del archivo /etc/passwd, es similar al siguiente

root:x:0:0:root:/root:/bin/bash
games:x:12:100:games:/usr/games:/sbin/nologin
loboalfa:x:1000:1000:Carlos A. Leal S.:/home/loboalfa:/bin/bash

/etc/passwd
Campo 1 Es el nombre del usuario, identificador de inicio de sesión (login). Tiene que ser único.
Campo 2 La ‘x’ indica la contraseña encriptada del usuario, además también indica que se está haciendo uso del archivo /etc/shadow, si no se hace uso de este archivo, este campo se vería algo así como: ‘ghy675gjuXCc12r5gt78uuu6R’.
Campo 3 Número de identificación del usuario (UID). Tiene que ser único. 0 para root, generalmente las cuentas o usuarios especiales se numeran del 1 al 100 y las de usuario normal del 101 en delante, en las distribuciones mas recientes esta numeración comienza a partir del 500.
Campo 4 Numeración de identificación del grupo (GID). El que aparece es el número de grupo principal del usuario, pero puede pertenecer a otros, esto se configura en /etc/groups.
Campo 5 Comentarios o el nombre completo del usuario.
Campo 6 Directorio de trabajo (Home) donde se sitúa al usuario después del inicio de sesión.
Campo 7 Shell que va a utilizar el usuario de forma predeterminada.

/etc/shadow

Hace mucho tiempo, las contraseñas cifradas se almacenaban en el mismo /etc/passwd. El problema es que ‘passwd’ es un archivo que puede ser leído por cualquier usuario del sistema, aunque solo puede ser modificado por root. Esto genera un problema de seguridad. El archivo ‘shadow’, resuelve el problema ya que solo puede ser leido por root. y se considera como como una extensión de ‘passwd’ porque almacena la contraseña encriptada, y otros campos de control de contraseñas.

El contenido de /etc/shadow es similar al siguiente

root:$6vLN8pNIinlOkXbT2fwns3bzZzhuR6GM6MQQKVw0x/sweQ./::0:99999:7:::
games:*:17110:0:99999:7:::
loboalfa:8PXkS04rr1yExVhkanfo/hNpJWh3itqubpx2Y/::0:99999:7:::

La información de cada usuario está dividida en 9 campos delimitados cada uno por ‘:’ dos puntos.

/etc/shadow

Campo 1

Nombre de la cuenta del usuario.

Campo 2

Contraseña cifrada o encriptada, un ‘*’ indica cuenta de ‘nologin’.

Campo 3

Días transcurridos desde el 1/ene/1970 hasta la fecha en que la contraseña fue cambiada por última vez.

Campo 4

Número de días que deben transcurrir hasta que la contraseña se pueda volver a cambiar.

Campo 5

Número de días tras los cuales hay que cambiar la contraseña. (-1 significa nunca). A partir de este dato se obtiene la fecha de expiración de la contraseña.

Campo 6

Número de días antes de la expiración de la contraseña en que se le avisará al usuario al inicio de la sesión.

Campo 7

Días después de la expiración en que la contraseña se inhabilitara, si es que no se cambio.

Campo 8

Fecha de caducidad de la cuenta. Se expresa en días transcurridos desde el 1/Enero/1970 (epoch).

Campo 9

Reservado.

/etc/group

Este archivo guarda la relación de los grupos a los que pertenecen los usuarios del sistema, contiene una línea para cada usuario con tres o cuatro campos por usuario:

El contenido del archivo /etc/group es similar a esto:

root:x:0:
games:x:20:
loboalfa:x:1000:loboalfa
  • El campo 1 indica el usuario.
  • El campo 2 ‘x’ indica la contraseña del grupo, que no existe, si hubiera se mostraría un ‘hash’ encriptado.
  • El campo 3 es el Group ID (GID) o identificación del grupo.
  • El campo 4 es opcional e indica la lista de grupos a los que pertenece el usuario

Añadir usuarios con useradd

useradd o adduser es el comando que permite añadir nuevos usuarios al sistema desde la línea de comandos. Sus opciones más comunes o importantes son las siguientes:

  • -c añade un comentario al momento de crear al usuario, campo 5 de /etc/passwd
  • -d directorio de trabajo o home del usuario, campo 6 de /etc/passwd
  • -e fecha de expiración de la cuenta, formato AAAA-MM-DD, campo 8 de /etc/shadow
  • -g número de grupo principal del usuario (GID), campo 4 de /etc/passwd
  • -G otros grupos a los que puede pertenecer el usuario, separados por comas.
  • -r crea una cuenta del sistema o especial, su UID será menor al definido en /etc/login.defs en la variable UID_MIN, además no se crea el directorio de inicio.
  • -s shell por defecto del usuario cuando ingrese al sistema. Si no se especifica, bash, es el que queda establecido.
  • -u UID del usuario, si no se indica esta opción, automáticamente se establece el siguiente número disponible a partir del último usuario creado.

En el caso de Centos 7, ya vienen pre-configuradas las opciones necesarias, por lo tanto no se necesita agregar ninguna opción, para agregar un usuario llamado juan simplemente:

useradd juan

Se creará el usuario y su grupo, así como las entradas correspondientes en /etc/passwd, /etc/shadow y /etc/group. También se creará el directorio de inicio o de trabajo: /home/juan y demás archivos de configuración.

Una versión más completa de este comando podría ser:

useradd -c "Juan Perez Hernandez" juan

Para los que aman las complicaciones

useradd -c «Juan Perez Hernandez» -gusers -d/home/juan/ -m juan

Solo falta agregar la contraseña se hace con passwd

passwd juan

Se debe escribir la contraseña dos veces y listo.

Modificar usuarios con usermod

Como su nombre lo indica, usermod permite modificar o actualizar un usuario o cuenta ya existente. Sus opciones más comunes o importantes son las siguientes:

  • -c añade o modifica el comentario, campo 5 de /etc/passwd
  • -d modifica el directorio de trabajo o home del usuario, campo 6 de /etc/passwd
  • -e cambia o establece la fecha de expiración de la cuenta, formato AAAA-MM-DD, campo 8 de /etc/shadow
  • -g cambia el número de grupo principal del usuario (GID), campo 4 de /etc/passwd
  • -G establece otros grupos a los que puede pertenecer el usuario, separados por comas.
  • -l cambia el login o nombre del usuario, campo 1 de /etc/passwd y de /etc/shadow
  • -L bloque la cuenta del usuario, no permitiendolé que ingrese al sistema. No borra ni cambia nada del usuario, solo lo deshabilita.
  • -s cambia el shell por defecto del usuario cuando ingrese al sistema.
  • -u cambia el UID del usuario.
  • -U desbloquea una cuenta previamente bloqueada con la opción -L.

Si quiseramos cambiar el nombre de usuario de ‘juan’ a ‘juanc’

:usermod -l juanc juan

Eliminar usuarios con userdel

Como su nombre lo indica, userdel elimina una cuenta del sistema, userdel puede ser invocado de tres maneras:

 userdel sergio

Sin opciones elimina la cuenta del usuario de /etc/passwd y de /etc/shadow, pero no elimina su directorio de trabajo ni archivos contenidos en el mismo, esta es la mejor opción, ya que elimina la cuenta pero no la información de la misma.

userdel -r sergio

Al igual que lo anterior elimina la cuenta totalmente, pero con la opción -r además elimina su directorio de trabajo y archivos y directorios contenidos en el mismo, así como su buzón de correo, si es que estuvieran configuradas las opciones de correo.

La cuenta no se podrá eliminar si el usuario esta logueado o en el sistema al momento de ejecutar el comando.

 

Centos Servidor

Ante el éxito que he tenido con el blog Ubuntu-Servidor,  Estoy iniciando un blog sobre administración de servidores con Centos, el cual en un momento de muy poca imaginación he decidido llamar Centos-Servidor. Lla versión que estoy utilizando para este blog es Centos 7.  Obviamente la versión más actual a la fecha.

Pretendo que este blog sea un buen sitio para empezar, especialmente para aquellos que no tienen experiencia en la administración de servidores. Mi aporte será una entrada semanal, explicando la configuración de un servidor con Centos desde la instalación, hasta la configuración de los principales servicios de red, como servidor FTP, SSH, DNS, Proxy, Web, etc.

La mayoría de las entradas estarán enlazadas a otros recursos de la web, tratando de mantener el conocimiento de la forma más abierta posible

Instalar VirtualBox guest additions en CentOS 7

Por: Carlos Antonio Leal S.

Basado en: https://www.megajason.com/2017/06/10/install-virtualbox-guest-additions-on-centos-7/

Los Guest Additions son una serie de programas que mejoran la integración entre el sistema anfitrión y el sistema invitado en una máquina virtual. Luego de completar la instalación de Centos 7 en VirtualBox, vale la pena instalarlos.

En el sistema operativo anfitrión

  • Instalar VirtualBox  (Obvio)
  • Desgargar e Instalar el ExtentionPack (Complemento super-necesario disponible en https://www.virtualbox.org/wiki/Downloads)
  • Crear una nueva máquina virtual e Instalar Centos 7 (Obvio)

En el sistema operativo huésped (Centos 7)

Todo lo que sigue, debe ser ejecutado como usuario administrador

  • Actualizar el sistema
  1. yum -y update
  • Instalar todo lo necesario para que puedan ser creados los módulos de los Guest Aditions
  • yum -y  groupinstall "Development Tools"
    yum -y install kernel-devel
  • También se necesita habilitar el repositorio EPEL y desde ahí instalar dkms
  • yum install epel-release
    yum install dkms
  • Re-inicar el sistema – Muy raro en Linux, pero necesario porque hemos instalado y actualizado varios módulos del kernel.
  • reboot
  • Una vez que iniciamos sesión insertamos el CD de los Guest Aditions,
  • El punto de montaje puede variar según el escritorio que se esté utilizando, para estar seguros lo mejor es el comando df, en mi caso:
  • Una vez localizado el punto de montaje

  • cd /run/media/loboalfa/VBOXADDITIONS_5.1.22_115126/
  • Ejecutar script de instación
  • ./VBoxLinuxAdditions.run
  • Re-iniciamos todo el sistema para que los cambios tengan efecto
  • reboot