Crear una cuenta de usuario

El n�cleo de Linux en s� trata a los usuario como meros n�meros. Cada usuario es identificado por un �nico numero entero, el uid (identificaci�n de usuario) esto debido a que un numero es mas f�cil y r�pido de procesarlo que un nombre para un sistema. Una base de datos o tabla asociada a dichos UIds y GIds, por fuera del n�cleo asigna un nombre textual, un �nico nombre de usuario para cada id. La base de datos que tambi�n contiene informaci�n adicional.

Para crear un usuario, necesita agregar informaci�n sobre el usuario a la base de datos (ver arriba) y crear un directorio "inicio" (directorio principal del usuario) para �l. Tambi�n puede ser necesario educar al usuario, y configurar un ambiente conveniente para �l.

La mayor�a de las distribuciones de Linux cuentan con programas para crear cuentas. Existen muchos de estos programas disponibles [32]. Contamos con dos comandos alternativos que son adduser y useradd, as� tambi�n como con herramientas gr�ficas [33]. Cualquiera sea el programa, resulta muy poco el trabajo manual por hacer. Aun cuando los detalles son muchos e intrincados, estos programas hace parecer todo trivial. Como sea, en la secci�n “Crear un usuario a mano” se describe c�mo hacerlo a mano.

/etc/passwd y otros archivos informativos/de informaci�n /etc/shadow

La base de datos b�sica de usuarios en un sistema Unix es un archivo de texto /etc/passwd (llamado el archivo de contrase�as), que lista todos los nombres de usuarios validos y su informaci�n asociada. El archivo tiene una l�nea por usuario, y es dividido en siete colon-delimited campos.

  • nombre de usuario

  • contrase�a, de modo encriptado

  • Identificaci�n (Id) de numero de usuario

  • Identificaci�n (Id) de numero de grupo

  • Nombre completo u otra informaci�n descriptiva de la cuenta

  • Directorio Inicio (directorio principal del usuario)

  • Interprete de comandos (programa a ejecutar al ingresar al sistema)

El formato esta explicado con mas detalles en la pagina de manual del comando passwd.

Cualquier usuario del sistema puede leer el archivo de contrase�as, para por ejemplo conocer el nombre de otro usuario del mismo. Esto significa que la contrase�a (el segundo campo) esta tambi�n disponible para todos. El archivo de contrase�as encripta las contrase�as, as� que en teor�a no hay problema, pero dicho encriptado puede ser quebrado, sobre todo si dicha contrase�a es "d�bil" [34]. Por lo tanto no es buena idea tener las contrase�as en el archivo de contrase�as.

Muchos sistemas GNU/Linux tienen contrase�as "sombra".Esto es una alternativa en la manera de almacenar las contrase�as: las claves encriptadas se guardan en un archivo separado /etc/shadow que solo puede ser le�do por el administrador del sistema. As� el archivo /etc/passwd solo contiene un marcador especial en ese segundo campo. Cualquier programa que necesite verificar un usuario o uid, pueden tambi�n acceder al archivo shadow/sombra. Significa tambi�n que programas normales que solo usan otros campos del archivo de contrase�as, no pueden acceder a las contrase�as. Paralelamente tambi�n existe /etc/gshadow para cierta informaci�n seg�n grupos [35]

Elegir n�meros de identificaci�n de usuario y grupo

En la mayor�a de los sistemas, no importa cuales son los n�meros de usuario y grupo, pero si usa un sistema de archivos de red [36], necesitar� que sean los mismo n�meros de identificaci�n de usuario (uid) y grupo (gid) en todos los sistemas. Esto es porque el sistema de archivos de red tambi�n identifica al usuarios (nombre de usuario) con su ++respectivo++ numero de identificaci�n de usuario (uid).

Si esta usando un sistema de archivos de red NFS [37], tiene que inventar un mecanismo para sincronizar la informaci�n de cada cuenta. Una alternativa es el sistema NIS [38](ver Gu�a de Administraci�n de Redes con Linux, Cap�tulo 13)

Como sea, trate de evitar re-usar n�meros de identificaci�n de usuario (UIds) y nombres de usuario exactamente iguales entre si entre sistemas, porque el nuevo due�o de ese numero de identificaci�n de usuario o nombre de usuario puede tener (o tendr� seguro?) acceso a los archivos o correos-e del anterior due�o.

Ambiente inicial: /etc/skel [39]

Cuando el directorio Inicio para un nuevo usuario es creado es inicializado por medio del directorio /etc/skel. El administrado del sistema puede crear archivos dentro de /etc/skel que proveer�n un amable entorno predeterminado para los usuarios. Por ejemplo, el puede crear un /etc/skel/.profile que configura las variable de entorno de alg�n editor mas amigable para los usuarios nuevos.

Como sea, usualmente lo mejor es conservar dicho directorio lo mas peque�o que sea posible, ya que en el futuro ser� imposible actualizar los archivos de los usuarios. Por ejemplo, si cambia el nombre de un editor a uno mas amigable, todos los usuarios tendr�n que editar su archivo .profile. El administrador del sistema podr�a tratar de hacer esto autom�ticamente con un script [40], pero casi con seguridad resultar� que se corrompa el archivo de alguno. Siempre que sea posible, es mejor poner lo que sea configuraci�n global dentro de archivos globales, como es /etc/profile. De esta manera es posible actualizarlo sin corromper la configuraci�n de ning�n usuario.

Crear un usuario a mano

Para crear una nueva cuenta a mano, sigue estos pasos:

  • Editar /etc/passwd con vipw y agregar una nueva linea por cada nueva cuenta. Teniendo cuidado con la sintaxis. No lo edite directamente con un editor! Use vipw que bloquea el archivo, as� otros comandos no tratar�n de actualizarlo al mismo tiempo. Deber�a hacer que el campo de la contrase�a sea `*', de esta forma es imposible ingresar al sistema.

  • Similarmente, edite /etc/group con vigr, si necesita crear tambi�n un grupo.

  • Cree el directorio Inicio del usuario con el comando mkdir.

  • Copie los archivos de /etc/skel al nuevo directorio creado [41]

  • Corrija la pertenencia del due�o y permisos con los comandos chown y chmod (Ver paginas de manual de los respectivos comandos). La opci�n -R es muy �til. Los permisos correctos var�an un poco de un sitio a otro, pero generalmente los siguientes comandos har�n lo correcto:

    cd /home/nuevo-nombre-de-usuario
    chown -R nombre-de-usuario.group .  
    chmod -R go=u,go-w .  chmod go= .
    

  • Asigne una contrase�a con el comando passwd

Despu�s de asignar la contrase�a del usuario en el ultimo paso, la cuenta funcionara. No deber�a configurar esto hasta que todo lo dem�s este hecho, de otra manera el usuario puede inadvertidamente ingresar al sistema mientras copias los archivos de configuraci�n de su entorno de trabajo.

A veces es necesario crear cuentas "falsas" [42] que no son usadas por personas. Por ejemplo, para configurar un servidor FTP [43] an�nimo (as� cualquiera podr� acceder a los archivos por �l, sin tener que conseguir una cuenta de usuario en el sistema primero) podr�a crear una cuenta llamada "ftp". En esos casos, usualmente no es necesario asignar una contrase�a (el ultimo paso de arriba). Verdaderamente, es mejor no hacerlo, para que nadie puede usar la cuenta, a menos que primero sea root/cuenta administrador, y as� convertirse en cualquier usuario.



[32] En Internet puede comenzar buscando en: http://sourceforge.com y http://freshmeat.com

[33] GUI: Grafic User Interface. En KDE dispone de Kuser. En Gnome ?XXX?

[34] Estad�sticamente, seg�n el estudio de los m�todos para romper claves encriptadas, se ha establecido que aumenta significativamente la seguridad una suma de caracter�sticas: tener mas de 6 caracteres, combinar letras may�sculas y min�sculas, a la vez que intercalar tambi�n n�meros.

[35] Si, esto significa que en el archivo de contrase�a contiene toda la informaci�n sobre un usuario excepto su contrase�a. Una maravilla del desarrollo.

[36] NFS: Network file System

[37] NFS: Network file System

[38] NIS: Network Information Service

[39] Apocope de la palabra inglesa skeleton, que en castellano significa esqueleto, asiendo referencia al funci�n de estructura.

[40] Lenguaje de programaci�n cuyo c�digo no necesita ser compilado para ser ejecutado, por lo general conjunto de instrucciones a ejecutar por el interprete de comandos (Shell). Se llamar tambi�n script a un programa o fragmento de c�digo escrito en alg�n lenguaje de scripts, interpretados por ejemplo por Perl (Mundo Unix y en general para todas las dem�s plataformas) Visual Basic Script (Microsoft Windows) JavaScript (Todas las plataformas). Ver tambi�n "Expresiones regulares".

[41] cp /etc/skel/* /ruta (donde ruta ser� por convenci�n /home/"nombre de usuario"

[42] �Usuarios Surrealistas?

[43] FTP: File transfer Protocol.