Usuarios y accesos al sistema

Como sucede en Linux, el acceso root remoto a una máquina HP-UX se puede y debe limitar desde el archivo /etc/securetty, donde se listan las terminales desde las que el superusuario del sistema puede acceder al mismo; si queremos que el root sólo pueda conectar desde la consola física de la máquina este archivo debe ser creado de la forma siguiente:
marta:/# echo console > /etc/securetty 
marta:/# chown root:sys /etc/securetty 
marta:/# chmod 644 /etc/securetty 
marta:/#
De nuevo, al igual que sucedía en Linux, esto no evita que se pueda ejecutar `su' desde cualquier sesión para conseguir privilegios de administrador, ni deshabilita el acceso remoto vía SSH o X Window. En el primer caso debemos vetar el acceso desde el archivo de configuración de sshd, mientras que en el segundo podemos hacerlo de la forma siguiente:
marta:/# cp -p /usr/dt/config/Xstartup /etc/dt/config/Xstartup 
marta:/# print "[[ ${USER} = root ]] && exit 1" >>/etc/dt/config/Xstartup 
marta:/#
Muchos de los parámetros que controlan el acceso de los usuarios a un sistema HP-UX se definen en el archivo /etc/default/security, que ha de tener permiso de escritura para root y de lectura para todos los usuarios; si este fichero no existe, el administrador puede - y debe - crearlo. Esta feature del operativo fue introducida de forma no documentada en HP-UX 11.0, y se incluye también en HP-UX 11i, ya documentada en la página de manual de `security'. Un ejemplo de este archivo puede ser el siguiente:
marta:/# cat /etc/default/security
ABORT_LOGIN_ON_MISSING_HOMEDIR=1
MIN_PASSWORD_LENGTH=8
NOLOGIN=1
NUMBER_OF_LOGINS_ALLOWED=3
PASSWORD_HISTORY_DEPTH=2
SU_ROOT_GROUP=admins
#SU_DEFAULT_PATH=
marta:/#
Seguramente los parámetros más importantes que podemos encontrar en este archivo son los referentes a las claves de usuario; tenemos en primer lugar MIN/SMALL>_PASSWORD/SMALL>_LENGTH, que como su nombre indica define la longitud mínima de las contraseñas en el sistema; mientras que en un HP-UX normal no afecta al root, en Trusted HP-UX sí que lo hace. Puede adoptar cualquier valor entre 6 (el mínimo por defecto) y 8 en los entornos normales, y entre 6 y 80 en Trusted HP-UX. El otro parámetro referente a las contraseñas es PASSWORD/SMALL>_HISTORY/SMALL>_DEPTH, que marca los passwords antiguos contra los que se compara uno nuevo: si su valor es N, cuando un usuario cambia su clave no podrá utilizar ninguna de sus N anteriores contraseñas. El valor de esta variable puede ser cualquier número entre 1 (valor por defecto) y 10, el valor máximo; si su valor es 2, evitamos que un usuario alterne constantemente dos contraseñas en el sistema.

Otro grupo de directivas es el formado por aquellas que afectan a la entrada de usuarios en el sistema; tenemos en primer lugar ABORT/SMALL>_LOGIN/SMALL>_ON/SMALL>_MISSING/SMALL>_HOMEDIR, que define cómo ha de comportarse el operativo cuando un usuario se autentica correctamente pero su directorio $HOME no existe. Si su valor es 0, el acceso se autorizará y el usuario entrará directamente al directorio `/'; si es 1, el login será rechazado a pesar de que la autenticación haya sido correcta.La segunda directiva de este grupo es NOLOGIN: si su valor es 1 y el fichero /etc/nologin existe, cuando un usuario diferente del root se autentique para entrar al sistema se le mostrará el contenido del archivo y se le cerrará la conexión (lo habitual en todos los Unices); por contra, si el valor de esta variable es 0, el archivo /etc/nologin simplemente será ignorado. Finalmente, la directiva NUMBER/SMALL>_OF/SMALL>_LOGINS/SMALL>_ALLOWED delimita el número máximo de conexiones simultáneas que los usuarios diferentes de `root' pueden poseer en el sistema; si su valor es 0, este número es ilimitado.

Vamos a ver por último un par de directivas que afectan a la ejecución de la orden `su' en el sistema. En primer lugar tenemos SU/SMALL>_ROOT/SMALL>_GROUP, que indica qué grupo de usuarios puede ejecutar la orden para convertirse - tecleando la contraseña, evidentemente - en administrador del sistema. Si este parámetro no está definido, cualquier usuario que conozca la clave puede convertirse en root, mientras que si lo está sólo los usuarios pertenecientes al grupo indicado pueden hacerlo.

Aparte del anterior parámetro, en HP-UX 11i se introdujo una nueva directiva en el fichero /etc/default/security; se trata de SU/SMALL>_DEFAULT/SMALL>_PATH, que marca el valor de la variable $PATH cuando alguien cambia su identificador de usuario mediante `su' sin la opción `-' (esto es, sin emular un login real).

Acabamos de ver que en el archivo /etc/default/security se pueden configurar diferentes aspectos relativos a las políticas de contraseñas a seguir en un sistema HP-UX; no obstante, algunos de los puntos más importantes de cualquier política están, como ocurre en Solaris, integrados dentro de la propia orden passwd: entre ellos algunos tan decisivos como la longitud mínima de una contraseña. Un esquema de este tipo resulta algo pobre actualmente, y como ya dijimos, cualquier Unix moderno debería incluir `de serie' la posibilidad de ofrecer una granularidad más adecuada en todo lo respectivo a las claves de los usuarios. Sea como sea, el esquema seguido en HP-UX es muy similar al de Solaris en cuanto a los requisitos mínimos para un password: al menos seis caracteres, dos de los cuales han de ser letras y uno numérico o especial, diferencias con la contraseña anterior en al menos tres caracteres - considerando equivalentes a mayúsculas y minúsculas para este propósito -, clave diferente del nombre de usuario y cualquier rotación del mismo, etc.

Ya para finalizar este punto, y relacionado también con la gestión de usuarios en HP-UX (aunque no explícitamente con el acceso de los mismos al sistema), es necesario hablar brevemente de los privilegios de grupo; este mecanismo, introducido en HP-UX 9.0, permite asignar a un grupo ciertos privilegios de administración, distribuyendo en cierta forma el `poder' del superusuario y rompiendo la aproximación al reparto de privilegios clásico de Unix (todo o nada). En la tabla 12.1 se muestran los privilegios de grupo soportados en HP-UX junto a la versión del operativo en la que fueron introducidos ([Spr01]).

Tabla 12.1: Privilegios de grupo en HP-UX
Versión Privilegio Descripción
9 RTPRIO Especificación de prioridades de tiempo real
9 MLOCK Utilización de plock()
9 CHOWN System V chown
9 LOCKRDONLY Utilización de lockf()
9 SETRUGID Utilización de setuid() y setgid()
10 MPCTL Utilización de mpctl()
10 RTSCHED Utilización de sched_setparam()
10 SERIALIZE Utilización de serialize()
11 SPUCTL Utilización de spuctl()
11i FSSTHREAD Utilización de fss()
11i PSET Utilización de pset()



Para asignar privilegios a un determinado grupo se utiliza la orden setprivgrp desde línea de comandos, y para que las modificaciones sean permanentes en el arranque de la máquina se lee el archivo /etc/privgroup (si existe) desde /etc/rc en HP-UX 9.x o de /etc/init.d/set_prvgrp en versiones superiores; en este fichero se indican (uno por línea) los privilegios a otorgar o eliminar a cada grupo:
marta:/# cat /etc/privgroup
-n CHOWN
admins CHOWN
admins SETRUGID
marta:/#
En el anterior ejemplo se limita de forma global el permiso para ejecutar chown a todos los usuarios, y a continuación se habilita ese mismo permiso, junto a la capacidad para utilizar setuid() y setgid(), a los miembros del grupo admins. Al menos la primera entrada debería encontrarse siempre en HP-UX, ya que por defecto el operativo presenta un comportamiento de chown basado en System V, lo que permite que un usuario pueda cambiar la propiedad de sus archivos asignándolos al resto de usuarios - incluido el root -, lo que claramente puede llegar a suponer un problema de seguridad; es mucho más recomendable una aproximación basada en BSD, que limita la ejecución de chown al root.

Como en otros sistemas Unix, cuando en HP-UX un usuario quiere cambiar de grupo puede ejecutar la orden newgrp; sin embargo, se introduce una característica adicional: en el fichero /etc/logingroup, de formato similar a /etc/group (de hecho puede ser un enlace a este por cuestiones de simplicidad), se define la lista inicial de grupos a los que un usuario pertenece, es decir, aquellos sobre los cuales no tiene que ejecutar `newgrp' para convertirse en miembro de los mismos. Si este archivo no existe o está vacío, el usuario ha de ejecutar `newgrp' siempre que quiera acceder a un grupo secundario, y evidentemente conocer la clave de grupo (como en cualquier Unix, si no está definido un password para el grupo, ningún usuario puede pertenecer a él si no es como grupo primario); en cualquier caso, la relación de grupos secudarios para un usuario ha de definirse en /etc/logingroup, ya que si sólo lo está en /etc/group se ignorará y el usuario deberá ejecutar `newgrp' para acceder a los grupos secundarios no definidos.

La orden `groups' nos indicará a qué grupos pertenece de forma directa - sin tener que teclear ninguna contraseña - un cierto usuario, basándose para ello en la información almacenada en /etc/passwd, /etc/group y /etc/logingroup:
marta:/# groups root
adm bin daemon lmadmin lp mail other root sys users
marta:/#
© 2002 Antonio Villalón Huerta