miércoles, 9 de noviembre de 2011

Creación, modificación y baja de usuarios en Unix

En HP-UX al igual de la mayoria de los sistemas operativos UNIX la configuración de los usuarios se guarda en dos archivos /etc/passwd y /etc/groups

El siguiente es el un tipico archivo /etc/passwd

root:YKtlooNa3vlo2:0:3::/root:/sbin/sh
daemon:*:1:5::/:/sbin/sh
bin:*:2:2::/usr/bin:/sbin/sh
sys:*:3:3::/:
adm:*:4:4::/var/adm:/sbin/sh
uucp:*:5:3::/var/spool/uucppublic:/usr/lbin/uucp/uucico
lp:*:9:7::/var/spool/lp:/sbin/sh
nuucp:*:11:11::/var/spool/uucppublic:/usr/lbin/uucp/uucico
hpdb:*:27:1:ALLBASE:/:/sbin/sh
nobody:*:-2:-2::/:
www:*:30:1::/:
smbnull:*:101:101:DO NOT USE OR DELETE - needed by Samba:/var/opt/samba/nologin:/bin/false
cimsrvr:*:102:102:WBEM Services:/var/opt/wbem:/sbin/sh
sfmdb:*:103:20::/home/sfmdb:/sbin/sh
sshd:*:104:103:sshd privsep:/var/empty:/bin/false
iwww:*:105:1::/home/iwww:/sbin/sh
owww:*:106:1::/home/owww:/sbin/sh

hpsmh:*:107:104:System Management Homepage:/var/opt/hpsmh:/sbin/sh
hmartine:pZlrKamPlX3Zc:200:20:Usuario de Hugo Martinez:/home/hmartine:/sbin/sh

Los campos en orden de izquierda a derecha representan
  1. Nombre de usuario
  2. Password encriptada
  3. Identificador de usuario
  4. Identificador de grupo primario
  5. Comentario o descripción acerca de la cuenta
  6. Home directory, lugar dentro del filesystem donde el usuario se encontrara al iniciar sesión
  7. Shell o interprete de comandos
  El segundo archivo de configuración /etc/group contiene

root::0:root
other::1:root,hpdb
bin::2:root,bin
sys::3:root,uucp
adm::4:root,adm
daemon::5:root,daemon
mail::6:root
lp::7:root,lp
tty::10:
nuucp::11:nuucp
users::20:root
nogroup:*:-2:
smbnull::101:
cimsrvr::102:
sshd::103:
hpsmh::104:

Nuevamente los campos en orden de izquierda a derecha representan
  1. Nombre de grupo
  2. Password encriptada (opcional)
  3. Identificador de grupo
  4. Miembros del grupo
Por ejemplo se puede ver que el usuario root forma parte de los grupos root, other, bin, sys, adm, daemon, mail, lp y users

Creación de usuarios

Para crear un usuario invocamos al comando useradd, por ejemplo se puede ejecutar lo siguiente

useradd -u 200 -g 20 -c "Usuario de Hugo Martinez" -m -s /sbin/sh hmartine

donde los flags,

-u especifica el user id
-g indica el group id primario
-c Permite ingresar un comentario / descripción acerca del usuario
-m Crea el home directory si este no existe
-s especifica el shell que se quiere usar


este comando tiene muchos flags para modificar su comportamiento

-d especifica el home directory
-G permite agregar grupos secundarios, se indica por group id o por group name
-o permite UID duplicados
-k especifica el skel directory, en este directorio se guardan archivos (por ejemplo .profile) que luego se copian al home del usuario que sera creado

La opción -D del useradd nos permite ver algunos de los valores que se setean por default

useradd -D     
GROUPID  20
BASEDIR  /home
SKEL     /etc/skel
SHELL    /sbin/sh
INACTIVE -1
EXPIRE   
COMMENT  
CHOWN_HOMEDIR no
CREAT_HOMEDIR no
ALLOW_DUP_UIDS no

Como es necesario que el /etc/passwd pueda ser leído por cualquier usuario, ya que programas sin privilegio como un simple ls -l necesita leerlo para poder mostrar el nombre y grupo del dueño de los files.
Bajo este escenario un usuario malicioso podría obtener  del /etc/passwd las passwords encriptadas y podria atacar por fuerza bruta usando un diccionario.
Por este motivo se vio la necesidad de crear un tercer archivo para separar las passwords encriptadas del archivo de passwords y asi nacio el /etc/shadow

Para generar el archivo /etc/shadow debemos correr el comando
pwconv
Contenido del /etc/passwd antes de correr pwconv

cat /etc/passwd
root:thgWHHS/VK7Mo:0:3::/root:/sbin/sh
daemon:*:1:5::/:/sbin/sh
bin:*:2:2::/usr/bin:/sbin/sh

...
hpsmh:*:107:104:System Management Homepage:/var/opt/hpsmh:/sbin/sh
hmartine:sdjIOCJX2AQ1Y:200:20:Usuario de Hugo Martinez:/home/hmartine:/sbin/sh


Luego de correr el pwconv

cat /etc/passwd
root:x:0:3::/root:/sbin/sh
daemon:x:1:5::/:/sbin/sh
bin:x:2:2::/usr/bin:/sbin/sh
...

hpsmh:x:107:104:System Management Homepage:/var/opt/hpsmh:/sbin/sh
hmartine:x:200:20:Usuario de Hugo Martinez:/home/hmartine:/sbin/sh