

==========================================================================================
         CAP 11 --- Traductor: Sefer. Version: Beta. Fecha: 16:43 18/03/2004

CONVENCIONES:

- los nmeros entre parentesis indican notas de traduccion al final de 
documento
- los nmeros entre corchetes indican notas de texto original.
- los signos "++" indican que se ha agregardo texto que excede el contenido 
original, bien en su literalidad, o es una adenda de contenido

==========================================================================================


Capitulo 11. Manejando cuentas de usuario

"Similitudes entre administradores de sistema y narcotraficantes: ambos miden 
cosas en Kilos y tiene usuarios" (Viejo y cansador chiste de computacin)

Este capitulo explica cmo crear nuevos usuarios, cmo modificar las 
propiedades de esas cuentas, y cmo remover/borrar. Diferentes sistemas 
GNU/Linux tiene diferentes herramientas para hacer esto.


11.1.1 Qu es una cuenta?

++Concretamente es un nombre de usuario -mas una contrasea, salvo 
excepciones- y todos los archivos (de configuracin y aquellos personales) que 
impliquen el ingreso y permanencia en el sistema  de un usuario .++
Cuando una computadora la usa mucha gente es usualmente necesario hacer 
diferencias en estos usuarios. Por ejemplo, para que sus archivos privados 
permanezcan privados.. Esto es importante aun si el sistema es usado por una 
sola persona a la vez, como es con la mayora de las computadoras [38]. As, a 
cada usuario se le da un nombre de usuario nico, y ese nombre es usado para 
ingresar al sistema.
Un usuario es mas que slo un nombre, como sea?. Una cuenta es todos los 
archivos, recursos, e informacin que pertenece a un usuario. El trmino 
insina como en bancos y en sistemas comerciales, cada cuenta usualmente tiene 
algo de dinero asignado, y ese dinero se gasta a diferentes velocidades 
dependiendo de cuantos usuario exijan el sistema. Por ejemplo, el espacio de 
disco puede tener un precio por mega por da, y ++tiempo de++ procesamiento 
puede tener un precio por segundo.




11.2 Crear una cuenta de usuario

El ncleo de Linux en s trata a los usuario como meros nmeros. Cada usuario 
es identificado por un nico numero entero, el  uid ++(identificacin de 
usuario)++ esto debido a que un numero es mas fcil y rpido de procesarlo que 
un nombre para un sistema. Una base de datos o tabla asociada a dichos UIds y 
GIds, por fuera del ncleo asigna un nombre textual, un nico nombre de 
usuario para cada id. La base de datos que tambin contiene informacin 
adicional. 

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

La mayora de las distribuciones de Linux cuentan con programas para crear 
cuentas. Existen muchos de estos programas disponibles (1). Contamos con dos 
comandos alternativos que son  adduser y useradd, as tambin como con 
herramientas graficas(2)
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 seccin 11.2.4 se describe cmo hacerlo a mano.






11.2.1. /etc/passwd y otros archivos informativos/de informacion ++/etc/shadow

La base de datos bsica de usuarios en un sistema Unix es un archivo de texto  
/etc/passwd (llamado el archivo de contraseas), que lista todos los nombres 
de usuarios validos y su informacin asociada. El archivo tiene una lnea por 
usuario, y es dividido en siete colon-delimited campos.

nombre de usuario
contrasea, de modo encriptado
Identificacin (Id) de numero de usuario
Identificacin (Id) de numero de grupo
Nombre completo u otra informacin 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 contraseas, para por 
ejemplo conocer el nombre de otro usuario del mismo. Esto significa que la 
contrasea (el segundo campo) esta tambin disponible para todos. El archivo 
de contraseas encripta las contraseas, as que en teora no hay problema, 
pero dicho encriptado puede ser quebrado, sobre todo si dicha contrasea es 
"dbil"(3).
Por lo tanto no es buena idea tener las contraseas en el archivo de 
contraseas.

Muchos sistemas GNU/Linux tienen contraseas "sombra".Esto es una  alternativa 
en la manera de almacenar las contraseas: las claves encriptadas se guardan 
en un archivo separado /etc/shadow que solo puede ser ledo por el 
administrador del sistema. Asi el archivo /etc/passwd solo contiene un 
marcador especial en ese segundo campo. Cualquier programa que necesite 
verificar un usuario o uid, pueden tambin acceder al archivo shadow/sombra. 
Significa tambin que programas normales que solo usan otros campos del 
archivo de contraseas, no pueden acceder a las contraseas. ++Paralelamente 
tambin existe /etc/gshadow para cierta informacin segn grupos++



11.2.2. Elegir nmeros de identificacin de usuario y grupo

En la mayora de los sistemas, no importa cuales son los nmeros de usuario y 
grupo, pero si usa un sistema de archivos de red (4), necesitar que sean los 
mismo nmeros de identificacion de usuario (uid) y grupo (gid) en todos los 
sistemas. Esto es porque el sistema de archivos de red tambin identifica al 
usuarios (nombre de usuario) con su ++respectivo++ numero de identificacin de 
usuario (uid). 
Si esta usando un sistema de archivos de red NFS (4), tiene que inventar un 
mecanismo para sincronizar la informacin de cada cuenta. Una alternativa es 
el sistema NIS(4a) ++(ver Gua de Administracin de Redes con Linux, Captulo 
13)++
Como sea, trate de evitar re-usar numeros de identificacin de usuario (UIds) 
y nombres de usuario exactamente iguales entre si entre sistemas, porque el 
nuevo dueo de ese numero de identificacin de usuario o nombre de usuario 
puede tener ++(o tendr seguro?)++ acceso a los archivos o correos-e del 
anterior dueo.






11.2.3. Ambiente inicial: /etc/skel(5)

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 proveern un amable entorno 
predeterminado para los usuarios. Por ejemplo, el puede crear un 
/etc/skel/.profile que configura  las variable de entorno de algn editor mas 
amigable para los usuarios nuevos.
Como sea, usualmente lo mejor es conservar dicho directorio lo mas pequeo 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 tendrn que editar su archivo  .profile. El administrador 
del sistema podra tratar de hacer esto automticamente con un script(6), pero 
casi con seguridad resultar que se corrompa el archivo de alguno.
Siempre que sea posible, es mejor poner lo que sea configuracin global dentro 
de archivos globales, como es /etc/profile. De esta manera es posible 
actualizarlo sin corromper la configuracin de ningn usuario.






11.2.4. 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 tratarn de actualizarlo al mismo tiempo. Debera hacer que 
el campo de la contrasea sea `*', de esta forma es imposible ingresar al 
sistema.
- Similarmente, edite /etc/group con vigr, si necesita crear tambin un grupo.
- Cree el directorio Inicio del usuario con el comando mkdir.
- Copie los archivos de /etc/skel al nuevo directorio creado (7)
- corrija la pertenencia del dueo y permisos con los comandos chown y chmod 
++(Ver paginas de manual de los respectivos comandos)++. La opcin -R es muy 
til. Los permisos correctos varan un poco de un sitio a otro, pero 
generalmente los siguientes comandos harn lo correcto:

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

- Asigne una contrasea con el comando passwd

Despus de asignar la contrasea del usuario en el ultimo paso, la cuenta 
funcionara. No debera configurar esto hasta que todo lo dems este hecho, de 
otra manera el usuario puede inadvertidamente ingresar al sistema mientras 
copias los archivos de configuracin de su entorno de trabajo.
A veces es necesario crear cuentas "falsas" [40] que no son usadas por 
personas. Por ejemplo, para configurar un servidor FTP(8) annimo (as 
cualquiera podr acceder a los archivos por l, sin tener que conseguir una 
cuenta ++de usuario en el sistema++ primero) podra crear una cuenta llamada 
"ftp". En esos casos, usualmente no es necesario asignar una contrasea (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.(???)





11.3. Cambiar las propiedades del usuario

Hay algunos comandos para cambiar varias propiedades de cualquier cuenta. 
Normalmente los usuarios solo pueden cambiar las propiedades de sus propias 
cuentas. A veces es necesario deshabilitar estas posibilidades (por medio del 
comando chmod)  para los usuarios normales, por ejemplo en un ambiente con 
muchos usuarios novatos.

Otras tareas pueden ser necesarias hacerlas manualmente. Por ejemplo, cambiar 
el nombre de usuario, editando el archivo /etc/passwd directamente (recuerda 
hacerlo con el vigr). Tambin para agregar o quitar a uno o varios usuarios de 
uno o mas grupos, editando /etc/group (con vigr). Este tipo de tareas tienden 
a ser mas raras, de todas maneras, siempre hay que ir con cuidado: si cambia 
un nombre de usuario, dicho usuario dejara de acceder a su cuenta de correo a 
menos que tambin le cree un alias para su correo.[41]






11.4. Borrando usuarios.  

Para borrar un usuario, primero borre los archivos que le pertenezcan, casilla 
de correo, alias de correo, trabajos de impresin, trabajos pendientes a 
travs de los demonios cron y at, y cualquier otra referencia al usuario. 
Entonces quite las correspondientes lineas relevantes de los archivos 
etc/passwd y /etc/group (recuerde borrar al usuario de todos los grupos a los 
cuales perteneca). 
Puede ser buena idea deshabilitar la cuenta antes de empezar a borrar cosas 
para prevenir que el usuario use la cuenta mientras esta siendo borrado.
Recuerde que los usuarios pueden tener archivos fuera de su directorio Inicio. 
Para encontrarlos use el comando:
find / -user username

Como sea, note que lo de arriba puede tomar mucho tiempo si tiene discos muy 
grandes. Si monta un disco de red, necesita ser cuidadoso pues no quiere 
arruinar la red o el servidor.
Algunas distribuciones tiene comandos especiales para hacer esto, ver deluser 
o userdel. Igualmente, es fcil hacerlo a mano, y de todas maneras puede que 
el comando no lo haga todo.





11.5. Deshabilitar un usuario temporalmente

A veces es necesario deshabilitar una cuenta temporalmente, sin borrarla.
Por ejemplo, un usuario pudo dejar de pagar sus cuentas, o el administrador de 
sistema puede sospechar que un cracker(9)  tiene la contrasea de esa cuenta.
La mejor manera es deshabilitar una cuenta es cambiar su interprete de 
comandos por otro programa que solo mande mensajes en pantalla. De esta 
manera, cualquiera sea la forma que intente entrar al sistema con esa cuenta 
fracasar, y sabr porqu. El mensaje puede decir que el usuario se contacte 
con el administrador de sistema para que cualquier problema sea tratado 
con/por l.
Es posible tambin cambiar el nombre de usuario o contrasea del mismo por 
otro, en tal caso el usuario no sabr que pasa. Usuarios confusos significa 
mas trabajo.

Una manera simple de para crear un programa especial es escribir una "cola de 
script": 

  #!/usr/bin/tail +2
  Esta cuenta ha sido cerrada por razones de seguridad.
  Por favor llame a 555-1234 y espere hasta que que lleguen los Hombre de 
Negro(10).

Los primeros dos caracteres (`#!') le dicen al ncleo que el resto de la lnea 
es un comando que necesita ejecutarse por medio de un interprete. El comando 
tail en este caso manda una salida en pantalla de todo excepto de la primera 
lnea de la salida estandar??? El usuario billg(11) es sospechado de infringir 
la seguridad, el administrador del sistema puede hacer algo como esto:

  # chsh -s
  /usr/local/lib/no-login/security billg
  # su - tester
  Esta cuenta ha sido cerrada por razones de seguridad.
  Por favor llame a 555-1234 y espere hasta que lleguen los Hombre de Negro


El propsito del comando su es verificar que el cambio funciona, por 
supuesto.
"Tail script" debe mantenerse en un directorio separado, as sus nombres no 
interfieren con los comandos de los usuarios normales.



[38] Puede ser un poco embarazoso si mi hermana pudiera leer mis cartas de 
amor.
[39] Si, esto significa que en el archivo de contrasea contiene toda la 
informacin sobre un usuario excepto su contrasea. Una maravilla del 
desarrolla.
[40] Usuarios Surrealistas?
[41] Los usuarios pueden cambiar su nombre por haberse casado, por ejemplo, y 
quieran tener su cuenta de usuario actualizada para reflejar su nuevo nombre.

------------------------------------------------



Notas del traductor:
(1) En Internet puede comenzar buscando en: http://sourceforge.com y 
http://freshmeat.com
(2) GUI: Grafic User Interface. En KDE dispone de Kuser. En Gnome ?XXX?
(3) Estadsticamente, segn el estudio de los mtodos para romper claves 
encriptadas, se ha establecido que aumenta significativamente la seguridad una 
suma de caractersticas: tener mas de 6 caracteres, combinar letras maysculas 
y minsculas, a la vez que intercalar tambin nmeros. 
(4)  N. de T.: NFS: Network file System
(4a) N. de T.: NIS: Network Information Service
(5)  N. de T.: apocope de la palabra inglesa skeleton, que en castellano 
significa esqueleto, asiendo referencia al funcin de estructura.+++
(6) Lenguaje de programacin cuyo codigo no necesita ser compilado para ser 
ejecutado, por lo general conjunto de instrucciones a ejecutar por el 
interprete de comandos (Shell). Se llamar tambin script a un programa o 
fragmento de cdigo escrito en algn lenguaje de scripts, interpretados por 
ejemplo por Perl (Mundo Unix y en general para todas las dems plataformas) 
Visual Basic Script (Microsoft Windows) JavaScript (Todas las plataformas). 
Ver tambin "Expresiones regulares".
(7) cp /etc/skel/* /ruta (donde ruta ser por convencin /home/"nombre de 
usuario"
(8) NdeT. FTP: File transfer Protocol.  
(9) NdeT. en este caso traducible a invitado inesperado y malicioso
(10) Especie de broma que hace referencia a los agentes especiales de la 
pelcula Hombres de Negro (Men In Black)
(11)  N. de T.: billg: referencia a Bill Gate, uno de los cofundadores de la 
empresa Microsoft.





