gestion de usuarios

From Genunix

Categoría: Usuarios

Contents

Cuentas de usuario

Las cuentas de usuario para el acceso al sistema no difieren en Solaris de otros sistemas unix, en el siguiente documente aprenderemos a:

  • Ficheros de configuración de usuarios
  • Gestión de usuarios (alta, modificación y borrado)
  • Gestión de grupos (alta, modificación y borrado)
  • Gestionar usuarios en grupos (alta, modificación y borrado)
  • Ficheros de inicialización

Ficheros de configuración

Los ficheros de configuración contienen la información sobre las cuentas de usuario, los grupos y contraseñas. Los ficheros son:

/etc/passwd 

Cada una de las líneas del fichero contiene la información de un usuarios. Cada línea esta organizada en campos separados por el carácter dos puntos que hace de separador de campo. Ejemplo de una línea del fichero passwd:

aulaunix:x:65535:1:Nombre y apellidos:/export/home/aulaunix:/bin/bash

El formato tiene la siguiente estructura:

IDlogin:x:UID:GID:comentario:home_directory:login_shell

Estos campos son:

  • IDlogin: es el identificador con el que hacemos login en el sistema debe de ser único.
  • Contraseña: la contraseña representada por x es almacenada en el fichero /etc/shadow
  • UID: esta representado por un número superior a 0 ya que 0 pertenece al usuario root. Los números del 1 al 99 están reservados para usuarios administradores del sistema. Para el resto de usuarios se utiliza el rango del 100 al 60000. Se reserva para el usuario nobody el 60001 y para el usuario noaccess el 60002.
  • GID: número mayor de 0 que representa el grupo primario al que pertenece el usuario.
  • Comentario: Nombre completo del usuario.
  • Directorio home (home_directory): ruta absoluta del directorio home para el usuario.
  • Shel (login_shell ): Define la shell para el usuario (sh, ksh, csh, etc..)
/etc/shadow

Contiene las contraseñas de las cuentas de usuario, al ser un fichero que puede comprometer la seguridad del sistema solo el usuario root debe de tener permisos de lectura para el archivo. El contenido del archivo es el siguiente:

root:SbEPJrMu/wMTw:6445::::::
daemon:NP:6445::::::
bin:NP:6445::::::
sys:NP:6445::::::
adm:NP:6445::::::
lp:NP:6445::::::
uucp:NP:6445::::::
nuucp:NP:6445::::::
dladm:*LK*:::::::
smmsp:NP:6445::::::
listen:*LK*:::::::
gdm:*LK*:::::::
webservd:*LK*:::::::
postgres:NP:::::::
nobody:*LK*:6445::::::
noaccess:*LK*:6445::::::
nobody4:*LK*:6445::::::
aulaunix:nMF64Wg9ff/HU:13570::::::

El formato tiene la siguiente estructura:

IDlogin:pwd:lastchg:min:max:warn:inactivo:expiracion:

Los datos que contiene cada línea del fichero shadow son:

  • IDlogin: identificador de entrada al sistema.
  • pwd: contraseña del usuario cifrada.
  • lastchg: días transcurridos entre el 11 de enero de 1970 y la ultima fecha de modificación.
  • min: establece el mínimo número de días antes de cambiar la contraseña.
  • max: establece el máximo numero de días que una contraseña esta activa.
  • warn: el número de días de antelación para el aviso al usuario de la expiración de la contraseña-
  • inactive: días que puede estar la cuenta inactiva (sin entradas al sistema) antes de bloquearse.
  • expiracion: Fecha de expiración de la cuenta.
/etc/group/

Todos los usuarios del sistema tienen que pertenecer a un grupo principal definido en el fichero /etc/passwd. Adicionalmente un usuario puede pertenecer más grupos disponibles en el sistema denominados grupos secundarios definidos en el fichero /etc/group. El siguiente ejemplo muestra las entradas por defecto en el fichero group:

root::0:
other::1:root
bin::2:root,daemon
sys::3:root,bin,adm
adm::4:root,daemon
uucp::5:root
mail::6:root
tty::7:root,adm
lp::8:root,adm
nuucp::9:root
staff::10:
daemon::12:root
sysadmin::14:
smmsp::25:
gdm::50:
webservd::80:
postgres::90:
nobody::60001:
noaccess::60002:
nogroup::65534:

El formato tiene la siguiente estructura:

nonmbredelgrupo:group-password:GID:listausuarios

Los datos que contiene cada línea del fichero group son:

  • nonmbredelgrupo: contiene el nombre del grupo.
  • group-password: Utilizado en versiones mas antiguas de unix. Actualmente no es utilizado.
  • GID: número que identifica al grupo y debe único en el sistema.
  • listausuarios: contiene la lista de usuarios separados por coma que pertenecen al grupo.

Gestión de usuarios

Crear usuario

El comando empleado para crear usuarios es useradd con las siguiente sintaxis:

useradd [–u uid] –g [gid] –G [gid1,gid2, …] [-d dir] –m [–s shell] [–c comment] [–e expire] usuario

Los parámetros admitidos son los siguientes:

  • -u define un uid único para el usuario.
  • -g define el grupo primario al que va a pertenecer el usuario.
  • -G define los grupos secundarios a los que va a pertenecer el usuario.
  • -d define el path absoluto para el home del usuario.
  • -m fuerza la creación del home del usuario si no existe.
  • -s define la shell para el usuario, por defecto asigna /bin/sh
  • -c establece el nombre completo del usuario o cualquier otro comentario.
  • -o permite la duplicación del uid del usuario.
  • -e fecha de expiración de la cuenta.
  • -f tiempo máximo admitido de inactividad para la cuenta. Si el usuario no entra en el sistema en el tiempo establecido la cuenta se bloquea.
  • -k permite la copia de archivos de inicialización personalizados al home del usuario al crearlo.

Ejemplo de uso de useradd:


El siguiente ejemplo muestra como crear el usuario aula, definir su UID manualmente e incluirlo en el grupo alumnos definiendo su home en /export/home/aulaunix, definimimos la shell como ksh.

Ejecución del comando:

# useradd -u 109 -g alumnos -d /export/home/aulaunix -m -s /bin/ksh -c
“usuario  de pruebas” aula

Inmediatamente se añade la siguiente línea al fichero /etc/passwd:

aula:x:109:100:usuarios de pruebas:/export/home/aulaunix:/bin/ksh

Modificar un usuario

Si ya tenemos un usuario en el sistema y deseamos cambiar alguna de sus propiedades utilizamos el comando usermod:

Las opciones permitidas son:

  • -o permite la duplicación de un UID
  • -m Mueve el home del usuario
  • -l Cambio del nombre de inicio de sesión
  • -f Definimos el número de días puede estar inactiva. Si la cuenta no es usada en el número de días especificado se bloquea.
  • -e Define la fecha de caducidad de la cuenta. Cuando llega ldicha fecha la cuenta es inutilizable.

Ejemplo de uso del comando usermod: Cambiamos el home del usuario dgalan a /home/nuevopath

#usermod –m –d /export/nuevohome dgalan

Este ejemplo implica que el nuevo home para el usuario dgalan es /export/nuevohome y mueve todos los archivos del viejo directorio al nuevo. Vamos a ejecutar el ejemplo anterior pero además vamos a cambiar el nombre de inicio de sesión:

#usermod –m –d /export/nuevohome –l davidgalan

Después de ejecutar el comando tenemos un nuevo home y un nuevo nombre de inicio de sesión.

Borrado de usuarios

Borrar un usuario del sistema es muy sencillo utilizando el comando userdel.

userdel –r [usuario a borrar]

La opción –r elimina el home del usuario si este existe, pero no borra los archivos que el usuario pueda tener repartidos en otros directorios de la máquina. Para eliminar todos los archivos del usuario deberíamos de recurrir a una búsqueda recursiva utilizando el comando find. Buscaríamos todos los archivos y directorios pertenecientes al usuario eliminado.

Ejemplo de borrado de usuario:

userdel –r dgalan

Borramos el usuario dgalan y los contenidos de su directorio home.

Cambiar la contraseña de usuario

Para cambiar la contraseña de un usuario recurrimos al comando passwd:

passwd [usuario]

Ejemplo de cambio de contraseña:
bash-3.00# passwd dgalan
Nueva contraseña: 
Vuelva a escribir la nueva contraseña: 
passwd: la contraseña se ha cambiado por dgalan satisfactoriamente
bash-3.00#

Gestión de grupos

Hemos visto como crear, modificar y eliminar usuarios. Ahora vamos a realizar el mismo recorrido pero esta vez gestionando grupos, para ello utilizaremos los comandos:

  • groupadd
  • groupmod
  • groupdel

ç0Añadir un nuevo grupo al sistema =

Para añadir un nuevo grupo al sistema recurrimos al comando groupadd. El GID y el nombre del grupo han de ser únicos. Ejemplo para añadir un grupo llamado operadores:

bash-3.00# groupadd -g 124 admins

Lo verificamos:

bash-3.00# grep admins /etc/group 
admins::124:
bash-3.00#

Hemos buscado el nuevo usuario en el fichero de grupos y efectivamente se añada la nueva entrada de grupo.

Modificar un grupo

Podemos ejecutar cambios en un grupo existente con el comando groupmod que nos permite modificar el GID o renombrar un grupo.

groupmod –d [GID] –n [nuevo nombre de grupo]

Este primer ejemplo cambia el GID para el grupo opera:

#groupmod –g 125 opera

Y este otro ejemplo cambia el nombre al grupo opera por monitor

#groupmod –n monitor opera

Eliminar un grupo

Eliminar un grupo existente es muy facil con el comando groupdel.

groupdel [nombre del grupo]

Ejemplo:

bash-3.00# groupdel admins

Cambio de grupos

Siempre que entramos al sistema lo hacemos perteneciendo al grupo principal, pero un usuario que pertenece a varios grupos puede necesitar operar en cada uno de ellos en diferentes momentos de su sesión en el sistema. Para cambiar de grupo recurrimos al comando newgrp, veamos un ejemplo practico: Hemos entrado al sistema con el usuario dgalan tal como se puede ver en el siguiente ejemplo:

$ id
uid=109(dgalan) gid=1(other)

Para pasarnos al grupo admin ejecutamos:
# newgrp admins

Lo verificamos:
$ id
uid=109(dgalan) gid=1(other) gid=45(admins)

A partir de este momento todos los ficheros y directorio creados pertenecerán al grupo admins.

¿Qué hacen los usuarios en el sistema?

El comando who

Solaris al igual que el resto de sistemas Unix nos facilita una serie de comandos que nos permite averiguar que usuarios están conectados al sistema y desde donde se han conectado.

El primero de estos comandos es who que muestra una lista con todos los usuarios conectados al sistema mostrando datos como:

  • usuario
  • conexión
  • fecha de entrada

Ejemplo del comando who:

$ who
root       console      Sep  1 19:41
aula       pts/1        Sep  1 19:45    (192.168.1.33)
$

El comando w

Otro comando a nuestro alcance es w que muestra la lista de usuarios en el sistema como el comando who pero añadiendo datos como los procesos y carga de CPU. Ejemplo del comando w:

$ w
  9:05pm  en funcionamiento  1:26,  2 usuarios,  promedio de carga: 0,01, 0,01, 0,21
User     tty           login@  idle   JCPU   PCPU  what
root     console       7:41pm  1:21                -sh
aula     pts/1         7:45pm            1         w

El comando finger

Muestra información detallada de los usuarios conectados al sistema y detalles de usuarios de forma individual.

Ejemplo de la salida del comando finger para todos los usuarios:

finder: no encontrado
$ finger
Login       Name               TTY         Idle    When    Where
root     Super-User            console     1:30 Sat 19:41 
aula            ???            pts/1            Sat 19:45  192.168.1.33        
$

Ejemplo de la salida del comando finger para obtener detalles de un solo usuario:

Login name: root                        In real life: Super-User
Directory: /                            Shell: /sbin/sh
On since Sep  1 19:41:45 on console     
1 hour 31 minutes Idle Time
No unread mail
No Plan.

El segundo ejemplo nos aporta información como la shell y el home del usuario así como el tiempo conectado.