Está en la página 1de 7

Administrar usuarios en sistemas Linux

Sus usuarios de Linux pueden no ser toros de lidia, pero mantenerlos felices es siempre
un desafío, ya que implica la gestión de sus cuentas, el seguimiento de sus derechos de
acceso, el seguimiento de las soluciones a los problemas que ejecutan, y mantenerlos
informados acerca de cambios importantes en los sistemas que utilizan. Estas son
algunas de las tareas y herramientas que hacen que el trabajo sea un poco más fácil.

Configuración de cuentas

La adición y la eliminación de cuentas es la parte más fácil de administrar usuarios,


pero todavía hay muchas opciones a considerar. Ya sea que utilice una herramienta de
escritorio o vaya con opciones de línea de comandos, el proceso se automatiza en gran
medida. Puede configurar un nuevo usuario con un comando tan simple como adduser
jdoe y muchas cosas sucederán. La cuenta de John se creará utilizando el siguiente UID
disponible y probablemente se rellenará con una serie de archivos que le ayudarán a
configurar su cuenta. Cuando ejecuta el comando adduser con un único argumento (el
nuevo nombre de usuario), solicitará información adicional y explicará qué está
haciendo.

$ sudo adduser jdoe


Adding user `jdoe' ...
Adding new group `jdoe' (1001) ...
Adding new user `jdoe' (1001) with group `jdoe' ...
Creating home directory `/home/jdoe' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for jdoe
Enter the new value, or press ENTER for the default
Full Name []: John Doe
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] Y

Como se puede ver, adduser añade la información del usuario (a los / etc / passwd y /
etc / archivos en la sombra), crea el nuevo directorio home y lo rellena con algunos
archivos de / etc / skel, y le pide que asigne la contraseña inicial y la información de
identificación, y luego verifica que todo esté bien. Si responde "n" para no en la final
"¿Es correcta la información?", se ejecutará de nuevo a través de todas sus respuestas
anteriores, lo que le permite cambiar cualquier cosa que desee cambiar.
Una vez que ha configurado una cuenta, es posible que desee verificar si se ve como
espera. Sin embargo, una estrategia mejor es asegurarse de que las elecciones que se
hacen "automágicamente" coincidan con lo que desea ver antes de que agregue su
primera cuenta. Los valores predeterminados son valores por defecto por un buen
motivo, pero es útil saber dónde están definidos en caso de que desee que algunos
sean diferentes. Por ejemplo, si no desea que los directorios de inicio en / home, no
desea que la UID de usuario empiece con 1000, o no desea que los archivos de los
directorios locales sean legibles por todos los usuarios del sistema.

Algunos de los detalles de cómo funciona el comando adduser se configuran en el


archivo /etc/adduser.conf. Este archivo contiene una gran cantidad de configuraciones
que determinan cómo se configuran las nuevas cuentas y se verá algo así. Tenga en
cuenta que las líneas de comentarios y espacios en blanco se omitirán en la salida de
abajo para poder centrarnos más fácilmente en la configuración.

$ cat /etc/adduser.conf | grep -v "^#" | grep -v "^$"


DSHELL=/bin/bash
DHOME=/home
GROUPHOMES=no
LETTERHOMES=no
SKEL=/etc/skel
FIRST_SYSTEM_UID=100
LAST_SYSTEM_UID=999
FIRST_SYSTEM_GID=100
LAST_SYSTEM_GID=999
FIRST_UID=1000
LAST_UID=29999
FIRST_GID=1000
LAST_GID=29999
USERGROUPS=yes
USERS_GID=100
DIR_MODE=0755
SETGID_HOME=no
QUOTAUSER=""
SKEL_IGNORE_REGEX="dpkg-(old|new|dist|save)"

Como se puede ver, tenemos una shell predeterminada (DSHELL), el valor inicial para
UIDs (FIRST_UID), la ubicación de los directorios de inicio (DHOME) y la ubicación de
origen de los archivos de inicio (SKEL) que se agregarán a cada cuenta cuando esté
configurada -junto con una serie de ajustes adicionales. Este archivo también especifica
los permisos que se asignarán a los directorios principales (DIR_MODE).

Una de las configuraciones más importantes es DIR_MODE, que determina los


permisos que se utilizan para el directorio de inicio de cada usuario. Dado este ajuste,
los permisos asignados a un directorio que el usuario crea serán 755. Dado este ajuste,
los directorios caseros se configurarán con los permisos rwxr-xr-x. Los usuarios podrán
leer los archivos de otros usuarios, pero no modificarlos ni eliminarlos. Si desea ser
más restrictivo, puede cambiar esta configuración a 750 (no hay acceso por parte de
nadie fuera del grupo del usuario) o incluso a 700 (sin acceso, pero sí al usuario).
Cualquier configuración de cuenta de usuario se puede cambiar manualmente después
de que se configuran las cuentas. Por ejemplo, puede editar el archivo / etc / passwd o
el directorio home de chmod, pero configurar el archivo /etc/adduser.conf antes de
comenzar a agregar cuentas en un nuevo servidor garantizará cierta consistencia y le
ahorrará tiempo y problemas a lo largo del tiempo de ejecución.

Los cambios en el archivo /etc/adduser.conf afectarán a todas las cuentas que se


configuren posteriormente a esos cambios. Si desea configurar una cuenta específica
de forma diferente, también tiene la opción de proporcionar opciones de configuración
de cuentas como argumentos con el comando adduser, además del nombre de usuario.
Tal vez quiera asignar una shell diferente para algún usuario, solicitar una UID
específica o desactivar los inicios de sesión por completo. La página de manual del
comando adduser mostrará algunas de sus opciones para configurar una cuenta
individual.

adduser[options][--homeDIR][--shellSHELL][--no-create-home]
[--uid ID] [--firstuid ID] [--lastuid ID] [--ingroup GROUP | --gidID]
[--disabled-password] [--disabled-login] [--gecos GECOS]
[--add_extra_groups] [--encrypt-home] user

En estos días probablemente cada sistema Linux, por defecto, pondrá a cada usuario en
su propio grupo. Como administrador, puede optar por hacer las cosas de manera
diferente. Es posible que encuentre usuarios en grupos compartidos que funcionen
mejor para su sitio, eligiendo usar la opción -gid de adduser para seleccionar un grupo
específico. Los usuarios pueden, por supuesto, ser siempre miembros de varios grupos,
por lo que tiene algunas opciones sobre cómo administrar grupos, tanto primarios
como secundarios.

Cómo tratar las contraseñas de usuario

Puesto que siempre es mala idea conocer la contraseña de otra persona, los
administradores generalmente utilizan una contraseña temporal cuando configuran
una cuenta y luego ejecutan un comando que forzará al usuario a cambiar su
contraseña en su primer inicio de sesión. He aquí un ejemplo:

$ sudo chage -d 0 jdoe

Cuando el usuario inicia sesión, verá algo como esto:

ADVERTENCIA: Su contraseña ha caducado.


Debe cambiar su contraseña ahora e ingresar de nuevo
Cambio de contraseña para jdoe.
(actual) Contraseña UNIX:
Agregar usuarios a grupos secundarios

Para agregar un usuario a un grupo secundario, puede usar el comando usermod como
se muestra a continuación: para agregar al usuario al grupo y luego verificar que se
realizó el cambio.

$ sudo usermod -a -G sudo jdoe


$ sudo grep sudo /etc/group
sudo:x:27:shs,jdoe

Tenga en cuenta que algunos grupos -como el sudo o el grupo de ruedas- implican
ciertos privilegios. Más sobre esto en un momento.

Eliminar cuentas, agregar grupos, etc.

Los sistemas Linux también proveen comandos para eliminar cuentas, agregar nuevos
grupos, remover grupos, etc. El comando deluser, por ejemplo, eliminará las entradas
de inicio de sesión de usuario de los archivos / etc / passwd y / etc / shadow, pero
dejará intacto su directorio personal, a menos que agregue la opción -remove-home o
--remove-all-files. El comando addgroup agrega un grupo, pero le dará la siguiente id
de grupo en la secuencia (es decir, probablemente en el rango del grupo de usuarios) a
menos que utilice la opción --gid.

$ sudo addgroup testgroup --gid=131


Adding group `testgroup' (GID 131) ...
Done.

Gestión de cuentas privilegiadas

Algunos sistemas Linux tienen un grupo de ruedas que da a los miembros la capacidad
de ejecutar comandos como root. En este caso, el archivo / etc / sudoers hace
referencia a este grupo. En los sistemas Debian, este grupo se denomina sudo, pero
funciona de la misma manera y verá una referencia como ésta en el archivo / etc /
sudoers:

% sudo ALL = (ALL: ALL) ALL

Esta configuración significa básicamente que cualquiera en el grupo rueda o sudo


puede ejecutar todos los comandos con el poder de la root una vez que coloque el
comando sudo como prefacio.

También puede agregar más privilegios limitados al archivo sudoers, tal vez para darle a
determinados usuarios la posibilidad de ejecutar uno o dos comandos como root. Si lo
hace, también debe revisar periódicamente el archivo / etc / sudoers para medir
cuántos privilegios tienen los usuarios y cuántos de los privilegios proporcionados
todavía son necesarios.
En el comando que se muestra a continuación, estamos viendo las líneas activas en el
archivo / etc / sudoers. Las líneas más interesantes en este archivo incluyen el conjunto
de rutas de comandos que se pueden ejecutar mediante el comando sudo, y los dos
grupos que tienen permiso para ejecutar comandos a través del mismo. Como se acaba
de mencionar, a los individuos se les pueden dar permisos al ser incluidos directamente
en el archivo de sudoers, pero generalmente es una mejor práctica definir privilegios a
través de las pertenencias a grupos.

# cat /etc/sudoers | grep -v "^#" | grep -v "^$"


Defaults env_reset
Defaults mail_badpass
Defaults
secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
root ALL=(ALL:ALL) ALL
%admin ALL=(ALL) ALL <== admin group
%sudoALL=(ALL:ALL) ALL <== sudo group

Comprobación de los inicios de sesión

Para ver cuándo un usuario inició sesión por última vez, puede utilizar un comando
como éste:

# last jdoe
jdoe pts/18 192.168.0.11 Thu Sep 14 08:44 - 11:48(00:04)
jdoe pts/18 192.168.0.11 Thu Sep 14 13:43 - 18:44(00:00)
jdoe pts/18 192.168.0.11 Thu Sep 14 19:42 - 19:43(00:00)

Si desea ver cuándo inició sesión cada uno de sus usuarios por última vez, puede
ejecutar el último comando a través de un bucle como éste:

$ for user in `ls /home`; do last $user | head -1; done


jdoe pts/18 192.168.0.11 Thu Sep 14 19:42 - 19:43(00:03)
rocket pts/18 192.168.0.11 Thu Sep 14 13:02 - 13:02(00:00)
shs pts/17 192.168.0.11 Thu Sep 14 12:45 still logged in

Este comando solo mostrará a los usuarios que han iniciado sesión desde que el
archivo wtmp actual se activó. Las líneas en blanco indican que algunos usuarios nunca
han iniciado sesión desde ese momento, pero no los llama. Un mejor comando sería
este que muestra claramente los usuarios que no han iniciado sesión en absoluto en
este período de tiempo:

$ for user in `ls /home`; do echo -n "$user ";last $user | head -1 | awk '{print
substr($0,40)}'; done
dhayes
jdoe pts/18 192.168.0.11 Thu Sep 14 19:42 - 19:43
peanut pts/19 192.168.0.29 Mon Sep 11 09:15 - 17:11
rocket pts/18 192.168.0.11 Thu Sep 14 13:02 - 13:02
shs pts/17 192.168.0.11 Thu Sep 14 12:45 still logged
tsmith

Ese comando es para escribir, pero podría convertirse en un script para hacerlo mucho
más fácil de usar.

#!/bin/bash
for user in `ls /home`
do
echo -n "$user ";last $user | head -1 | awk '{print substr($0,40)}'
done

A veces, este tipo de información puede alertar a los cambios en los roles de los
usuarios que sugieren que pueden no necesitar más las cuentas en cuestión.

Comunicación con los usuarios

Los sistemas Linux proporcionan una serie de formas de comunicarse con sus usuarios.
Puede agregar mensajes al archivo / etc / motd que se mostrará cuando un usuario
inicie sesión en un servidor mediante una conexión de terminal. También puede enviar
mensajes a los usuarios con comandos como escribir (mensaje a un solo usuario) o en
pared (escribir a todos los usuarios conectados.

$ wall System will go down in one hour


Broadcast message from shs@stinkbug (pts/17) (Thu Sep 14 14:04:16 2017):
System will go down in one hour

Es probable que los mensajes importantes se envíen a través de múltiples canales, ya


que es difícil predecir lo que los usuarios realmente notarán. En conjunto, las
notificaciones de mensaje de la jornada (motd), en pared y de correo electrónico
podrían tener la oportunidad de captar la mayor parte de la atención de sus usuarios.

Preste atención a los archivos de registro

Prestar atención a los archivos de registro también puede ayudarle a entender la


actividad del usuario. En particular, el archivo /var/log/auth.log mostrará la actividad
de inicio de sesión y cierre de sesión del usuario, la creación de nuevos grupos, etc. Los
archivos / var / log / messages o / var / log / syslog le informarán más sobre la actividad
del sistema.

Seguimiento de problemas y solicitudes

Independientemente de si instala o no una aplicación de ticketing en su sistema Linux,


es importante seguir los problemas en los que se encuentran los usuarios y las
solicitudes que realizan. Sus usuarios no estarán contentos si alguna porción de sus
peticiones cae a través de las grietas proverbiales. Incluso un registro de papel podría
ser útil o, mejor aún, una hoja de cálculo que le permite darse cuenta de los problemas
que aún están pendientes y cuál fue la causa raíz de los problemas. Asegurar que los
problemas y las solicitudes se aborden es importante y los registros también pueden
ayudarle a recordar lo que tenía que hacer para resolver un problema que reaparece
muchos meses o incluso años más tarde.

Envolver

Administrar cuentas de usuario en un servidor ocupado depende en parte de comenzar


con valores predeterminados bien configurados y en parte de la supervisión de las
actividades del usuario y los problemas encontrados. Es probable que los usuarios
estén contentos si sienten que son sensibles a sus preocupaciones y saben qué esperar
cuando se necesitan actualizaciones del sistema.
Sandra Henry-Stocker, Network World (EE.UU.)

También podría gustarte