martes, 24 de noviembre de 2020

Administración de usuarios en Ubuntu

Posted by q3it on martes, noviembre 24, 2020 in ,
En Ubuntu (y Linux en general), al contrario a como sucede en el mundo Windows, no es necesario buscar el programa manualmente por internet, descargarlo e instalar montones de librerías necesarias para su ejecución. Para eso existen los repositorios, una especie de almacén centralizado que contiene todo el software disponible y que siempre está actualizado. Nosotros tan sólo deberemos elegir la aplicación y el sistema ya se encarga solo de descargarla e instalarla. 

Aunque podemos instalar programas de forma gráfica, siempre podemos recurrir a la terminal para instalar cualquier programa. 

A muchos usuarios noveles esta opción les puede parecer un poco más complicada y algo críptica. Nada más lejos de la realidad; cuando uno se acostumbra es mucho más cómodo, fácil, potente y rápido. Y hay que tener en cuenta que esto aplicaría para todas las distribuciones linux. 

Administrar usuarios por consola 
Linux es un sistema multiusuario, por lo tanto, la tarea de añadir, modificar, eliminar y en general administrar usuarios se convierte en algo no solo rutinario, sino importante, además de ser un elemento de seguridad que mal administrado o tomado a la ligera, puede convertirse en un enorme hoyo de seguridad. 

Tipos de usuarios 
Los usuarios en Unix/Linux se identifican por un número único de usuario, User ID, UID. Y pertenecen a un grupo principal de usuario, identificado también por un número único de grupo, Group ID, GID. El usuario puede pertenecer a más grupos además del principal. 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: 
  • Ejemplos: bin, daemon, adm, lp, sync, shutdown, mail, operator, squid, apache, etc. 
  • Se les llama también cuentas del sistema. 
  • No tiene todos los privilegios del usuario root, pero dependiendo de la cuenta asumen distintos privilegios de root. 
  • Lo anterior para proteger al sistema de posibles formas de vulnerar la seguridad. 
  • No tienen contraseñas pues son cuentas que no están diseñadas para iniciar sesiones con ellas. 
  • 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 de Linux o de la aplicación. 
  • Generalmente se les asigna un UID entre 1 y 100 (definido en /etc/login.defs) 
Usuarios normales: 
  • Se usan para usuarios individuales. 
  • 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. 
  • Por seguridad, es siempre mejor trabajar como un usuario normal en vez del usuario root, y cuando se requiera hacer uso de comandos solo de root, utilizar el comando su. 
  • En las distros actuales de Linux se les asigna generalmente un UID superior a 500. 
/etc/passwd 
Cualquiera que sea 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. 

/etc/shadow 
Anteriormente (en sistemas Unix) 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. Con cualquier computadora potente de hoy en día, un buen programa de descifrado de contraseñas y paciencia es posible "crackear" contraseñas débiles (por eso la conveniencia de cambiar periódicamente la contraseña de root y de otras cuentas es importante). El archivo 'shadow', resuelve el problema ya que solo puede ser leído por root. Considérese a 'shadow' como una extensión de 'passwd' ya que no solo almacena la contraseña encriptada, sino que tiene otros campos de control de contraseñas. 

/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 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 
Actualmente al crear al usuario con useradd se crea también automáticamente su grupo principal de trabajo GID, con el mismo nombre del usuario. Es decir, si se añade el usuario 'diego' también se crea el /etc/group el grupo 'diego'. 

pwconv y pwunconv 
El comportamiento por defecto de todas las distros modernas de GNU/Linux es activar la protección extendida del archivo /etc/shadow, que (se insiste) oculta efectivamente el 'hash' cifrado de la contraseña de /etc/passwd. 
Pero si por alguna extraña situación de compatibilidad se requiriera tener las contraseñas cifradas en el mismo archivo de /etc/passwd se usaría el comando pwunconv: 

/etc/login.defs 
En el archivo de configuración /etc/login.defs están definidas las variables que controlan los aspectos de la creación de usuarios y de los campos de shadow usadas por defecto. 
Algunos de los aspectos que controlan estas variables son: 
  • Número máximo de días que una contraseña es válida PASS_MAX_DAYS 
  • El número mínimo de caracteres en la contraseña PASS_MIN_LEN 
  • Valor mínimo para usuarios normales cuando se usa useradd UID_MIN 
  • El valor umask por defecto UMASK 
  • Si el comando useradd debe crear el directorio home por defecto CREATE_HOME 
Basta con leer este archivo para conocer el resto de las variables que son autodescriptivas y ajustarlas al gusto. Recuérdese que se usarán principalmente al momento de crear o modificar usuarios con los comandos useradd y usermod. 

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. 
Ahora bien, realmente no hay prácticamente necesidad de indicar ninguna opción ya que si hacemos lo siguiente: 
#> useradd diego 

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/diego y los archivos de configuración que van dentro de este directorio. 
Las fechas de expiración de contraseña, etc. Quedan lo más amplias posibles para que no haya problema que la cuenta caduque, así que prácticamente lo único que faltaría sería añadir la contraseña del usuario. 

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 bloquea la cuenta del usuario, no permitiéndole 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 queremos cambiar el nombre de usuario de 'diego' a 'didak’': 

#> usermod -l didak diego 

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

#> userdel diego 

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 diego 

Al igual que lo anterior elimina la cuenta totalmente, pero con la opción -r además elimina su directorio de trabajo, 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 está logueado o en el sistema al momento de ejecutar el comando. 

#> userdel -f diego 

La opción -f es igual que la opción -r, elimina todo lo del usuario, cuenta, directorios y archivos del usuario, pero además lo hace sin importar si el usuario está actualmente en el sistema trabajando. Es una opción muy radical, además de que podría causar inestabilidad en el sistema, así que hay que usarla solo en casos muy extremos. 

Crear contraseñas con passwd 
Crear al usuario con useradd es el primer paso, el segundo es asignarle una contraseña a ese usuario. Esto se logra con el comando passwd que permitirá ingresar la contraseña y su verificación: 

#> passwd diego 
Changing password for user prueba. 
New UNIX password: 
Retype new UNIX password: 
passwd: all authentication tokens updated successfully. 
#> 

El usuario root es el único que puede indicar el cambio o asignación de contraseñas de cualquier usuario. Usuarios normales pueden cambiar su contraseña en cualquier momento con tan solo invocar passwd sin argumentos, y podrá de esta manera cambiar la contraseña cuantas veces lo requiera. 
Resumiendo entonces, se podría decir que todo este tutorial se reduce a dos líneas de comandos para crear y dejar listo para trabajar a un usuario en Linux: 

#> useradd diego 
#> passwd asir 

Se crea el usuario 'diego', useradd hace todo el trabajo de establecer el shell, directorio de inicio, copiar archivos iniciales de configuración de la cuenta, etc. y después passwd establece la contraseña. 

Administrar usuarios de forma gráfica 

Ejecutar gnome-system-tools 
En la interfaz gráfica, encontraremos la herramienta gnome-system-tools bajo el nombre, de Usuarios y grupos. 
Comenzaremos haciendo clic sobre el elemento Mostrar aplicaciones. 

Cuando se muestre el panel de actividades, debemos localizar el icono de Usuarios y grupos. Para lograrlo, podemos comenzar a escribir su nombre o hacer clic sobre el botón Todas y, a continuación, localizarlo entre la lista completa de aplicaciones. 

Una vez encontrado, haremos clic sobre él. 

Se muestra la ventana Ajustes de los usuarios, en ella verás una lista, a la izquierda, con todos los usuarios registrados en tu sistema (en este caso, tenemos uno). 

A la derecha, verás los datos generales del usuario seleccionado a la izquierda: El nombre completo del usuario, el tipo de cuenta y si el sistema debe preguntar la contraseña para iniciar sesión. 

Este último aspecto nos permite facilitar el acceso a los usuarios cuando la seguridad no es importante. Más abajo, disponemos de un botón titulado Ajustes avanzados, que estudiaremos después.


Crear cuentas de usuario 
En la ventana anterior, bajo la lista de usuarios, disponemos de un botón que nos permite añadir nuevos usuarios y otro para eliminar el usuario que tengamos seleccionado. 
Por ahora, hacemos clic sobre el botón Añadir. 
Como se trata de una tarea administrativa, el sistema nos solicita la contraseña. 

Al hacerlo, obtenemos la ventana Crear un usuario nuevo. En ella, escribimos, en el cuadro de texto Nombre, el nombre completo del usuario. 

Más abajo, en el cuadro Usuario, aparece una propuesta para el nombre de la cuenta, basada en el texto que hayamos escrito arriba. Puedes dejar el valor predeterminado, desplegar la lista para elegir una propuesta diferente o escribir el texto que prefieras, siempre que sigas las indicaciones de texto informativo que aparece debajo.


Al hacerlo, el sistema nos solicita una contraseña para la cuenta de usuario. Como es habitual, habrá que escribirla por duplicado para evitar errores tipográficos. También podemos generar la contraseña de forma aleatoria, para que sea el sistema quien se encargue de crear una contraseña segura.
Incluso podemos decidir que el usuario no tenga que escribir la contraseña para iniciar sesión.


De vuelta en la pantalla principal, comprobamos que el usuario se ha creado de forma satisfactoria. 


Realizar ajustes avanzados sobre una cuenta
Para cambiar parámetros de la cuenta, podemos echar un vistazo a los ajustes avanzados.
Hacemos clic sobre el botón Ajustes avanzados.

De esta forma conseguimos que aparezca una ventana dividida en tres solapas. En la primera, Información de contactos, nos permite añadir información complementaria sobre el usuario que utiliza la cuenta.

En la segunda, Privilegios del usuario, podemos establecer las cosas que podrá hacer el usuario, como configurar impresoras, compartir archivos a través de la red, usar el escáner, etc.

Finalmente, en la solapa Avanzado, podremos definir la carpeta donde se guardará su información personal, el intérprete de comandos (shell) que usará, el grupo principal al que pertenece (observa que se ha creado uno, de forma automática, con el mismo nombre de la cuenta) y su identificador de usuario.


Cuando hayamos realizado los cambios necesarios, hacemos clic sobre el botón Aceptar y cerramos la ventana principal del programa. La cuenta estará lista para usarse.