% Linux Installation and Getting Started    -*- TeX -*-
% users.tex
% Copyright (c) 1993 by Matt Welsh and Lars Wirzenius
%
% This file is freely redistributable, but you must preserve this copyright 
% notice on all copies, and it must be distributed only as part of "Linux 
% Installation and Getting Started". This file's use is covered by
% the copyright for the entire document, in the file "copyright.tex".
%
% Este fichero es de distribuci\'on libre, pero debe mantenerse esta 
% informaci\'on de Copyright en todas las copias, y debe distribuirse solo como
% parte de "Instalaci\'on y Primeros Pasos en Linux". El uso de este fichero esta
% cubierto por el Copyright del documento completo, en el fichero "copyright.tex"
% Copyright (c) 1995 por Gerardo Izquierdo para la versi\'on al Castellano
% $Log: users.tex,v $
% Revision 0.5.0.1  1996/02/10 23:45:14  rcamus
% Primera beta publica
%
%

\section{Gesti\'on de Usuarios}\label{sec-manage-users}\label{sec-add-user}

\index{administraci\'on de usuarios!a\~nadiendo usuarios}
\index{a\~nadiendo usuarios}
\index{usuarios!a\~nadiendo}
Independientemente de que tenga muchos usuarios o no en su sistema, es
importante comprender los aspectos de la gesti\'on de usuarios bajo Linux.
Incluso si se es el \'unico usuario, se debe tener, presumiblemente, una cuenta
distinta de {\tt root} para hacer la mayor parte del trabajo.

	Cada persona que utilice el sistema debe tener su propia cuenta.
	Raramente es una buena idea el que varias personas compartan la misma
	cuenta. No s\'olo es un problema de seguridad, sino que las cuentas
	se utilizan para identificar un\'{\i} vocamente a los usuarios al sistema.
	Se necesita ser capaz de saber qui\'en est\'a haciendo qu\'e.

\subsection{Conceptos de gesti\'on de usuarios}
El sistema mantiene una cierta cantidad de informaci\'on acerca de cada usuario.
Dicha informaci\'on se resume a continuaci\'on.
\begin{dispitems}

\index{usuarios!nombre de }
\index{nombre de usuario!definici\'on}
\ditem{{\bf nombre de usuario}}
El nombre de usuario es el identificador \'unico dado a cada usuario del 
sistema. Ejemplos de nombres de usuario son {\tt larry}, {\tt karl} y 
{\tt mdw}. Se pueden utilizar letras y d\'{\i} gitos junto a los caracteres 
``{\tt \_}'' (subrayado) y ``{\tt .}'' (punto). Los nombres de usuario se
limitan normalmente a 8 caracteres de longitud.

\index{usuarios!user ID de}
\index{user ID!definici\'on}
\index{UID!definici\'on}
\ditem{{\bf user ID}}
El user ID, o UID, es un n\'umero \'unico dado a cada usuario del sistema. El
sistema normalmente mantiene la pista de la informaci\'on por UID, no por
nombre de usuario.

\index{usuarios!group ID de}
\index{group ID!definici\'on}
\index{GID!definici\'on}
\ditem{{\bf group ID}}
El group ID, o GID, es la identificaci\'on del grupo del usuario por defecto.
En la secci\'on~\ref{sec-perms} discutimos los permisos de grupo; cada usuario 
pertenece a uno o m\'as grupos definidos por el administrador del sistema.
M\'as sobre \'esto m\'as adelante.

\index{usuarios!clave de}
\ditem{{\bf clave}}
El sistema tambi\'en almacena la clave encriptada del usuario. El comando
{\tt passwd} se utiliza para poner y cambiar las claves de los usuarios.

\index{usuarios!nombre completo de}
\ditem{{\bf nombre completo}}
El ``nombre real'' o ``nombre completo'' del usuario se almacena junto con el
nombre de usuario. Por ejemplo, el usuario {\tt schmoj} puede tener el nombre
``Jos Schmo'' en la vida real.

\index{usuarios!directorio inicial de}
\index{directorio inicial!definido}
\ditem{{\bf directorio inicial}}
El directorio inicial es el directorio en el que se coloca inicialmente al
usuario en tiempo de conexi\'on. Cada usuario debe tener su propio directorio
inicial, normalmente situado bajo {\tt /home}.

\index{usuarios!Int\'erprete de conexi\'on de}
\index{int\'erprete de conexi\'on!definici\'on}
\ditem{{\bf int\'erprete de inicio}}
El int\'erprete de inicio del usuario es el int\'erprete de comandos que es 
arrancado para el usuario en tiempo de conexi\'on. Ejemplos pueden ser 
{\tt /bin/bash} y {\tt /bin/tcsh}.
\end{dispitems}

\index{/etc/passwd@{\tt /etc/passwd}}
\index{fichero de password!formato de}
El fichero {\tt /etc/passwd} contiene la informaci\'on anterior acerca de los
usuarios. Cada l\'{\i} nea del fichero contiene informaci\'on acerca de un \'unico 
usuario; el formato de cada l\'{\i} nea es
\begin{tscreen}
nombre:clave encriptada:UID:GID:nombre completo:dir.inicio:int\'erprete
\end{tscreen}
Un ejemplo puede ser:
\begin{tscreen}
kiwi:Xv8Q981g71oKK:102:100:Laura Poole:/home/kiwi:/bin/bash
\end{tscreen}

Como puede verse, el primer campo , ``{\tt kiwi}'', es el nombre de usuario.

El siguiente campo, ``{\tt Xv8Q981g71oKK}'', es la clave encriptada.
Las claves no se almacenan en el sistema en ning\'un formato legible por
el hombre. Las claves se encriptan utiliz\'andose a s\'{\i}  mismas como clave
secreta. En otras palabras, s\'olo si se conoce la clave, \'esta puede ser
desencriptada. Esta forma de encriptaci\'on es bastante segura.

Algunos sistemas utilizan ``claves en sombra'' en la que la informaci\'on
de las claves se relega al fichero {\tt /etc/shadow}. Puesto que 
{\tt /etc/passwd} es legible por todo el mundo, {\tt /etc/shadow} suministra
un grado extra de seguridad, puesto que \'este no lo es. Las claves en 
sombra suministran algunas otras funciones como puede ser la expiraci\'on de 
claves; no entraremos a detallar \'estas funciones aqu\'{\i} .

El tercer campo ``{\tt 102}'', es el UID. Este debe ser \'unico para cada 
usuario. El cuarto campo, ``{\tt 100}'', es el GID. Este usuario pertenece
al grupo numerado 100. La informaci\'on de grupos, como la informaci\'on de
usuarios, se almacena en el fichero {\tt /etc/group}. V\'ease la 
secci\'on~\ref{sec-manage-groups} para m\'as informaci\'on.

El quinto campo es el nombre completo del usuario. ``{\tt Laura Poole}''. Los
dos \'ultimos campos son el directorio inicial del usuario ({\tt /home/kiwi}) y
el int\'erprete de conexi\'on ({\tt /bin/bash}), respectivamente. No es necesario
que el directorio inicial de un usuario tenga el mismo nombre que el del
nombre de usuario. Sin embargo, ayuda a identificar el directorio.

\subsection{A\~nadiendo usuarios}
\index{usuarios!a\~nadiendo!con adduser@a\~nadiendo con {\tt adduser}}
\index{usuarios!a\~nadiendo!con useradd@a\~nadiendo con {\tt useradd}}
\index{a\~nadiendo usuarios!con adduser@con {\tt adduser}}
\index{a\~nadiendo usuarios!con useradd@con {\tt useradd}}
\index{useradd@{\tt useradd}}
\index{adduser@{\tt adduser}}
Cuando se a\~nade un usuario hay varios pasos a seguir. Primero, 
se le debe crear una entrada en {\tt /etc/passwd}, con un nombre de
usuario y UID \'unicos. Se debe especificar el GID, nombre completo y resto
de informaci\'on. Se debe crear el directorio inicial, y poner los permisos
en el directorio para que el usuario sea el due\~no. Se deben suministrar 
ficheros de comandos de inicializaci\'on en el nuevo directorio y se debe 
hacer alguna otra configuraci\'on del sistema (por ejemplo, preparar
un buz\'on para el correo electr\'onico entrante para el nuevo usuario).

Aunque no es dif\'{\i} cil el a\~nadir usuarios a mano (yo lo hago), cuando 
se est\'a ejecutando un sistema con muchos usuarios, es f\'acil el 
olvidarse de algo. La manera m\'as simple de a\~nadir usuarios es 
utilizar un programa interactivo que vaya preguntando por la 
informaci\'on necesaria y actualice todos los ficheros del sistema 
autom\'aticamente. El nombre de este programa es {\tt useradd} o {\tt 
adduser} dependiendo del software que est\'e instalado. Las p\'aginas 
{\tt man} para estos comandos deber\'{\i} an ser suficientemente 
autoexplicatorias.

\subsection{Borrando usuarios}
\index{usuarios!borrando}
\index{borrando usuarios}
\index{userdel@{\tt userdel}}
\index{deluser@{\tt deluser}}
De forma parecida, borrar usuarios puede hacerse con los comandos 
{\tt userdel} o {\tt deluser} dependiendo de qu\'e software fuera instalado 
en el sistema.

\index{usuarios!deshabilitando}
\index{deshabilitando usuarios}
Si se desea ``deshabilitar'' temporalmente un usuario para que no se conecte
al sistema (sin borrar la cuenta del usuario), se puede prefijar con un
asterisco (``{\tt *}'') el campo de la clave en {\tt /etc/passwd}. Por 
ejemplo, cambiando la l\'{\i} nea de {\tt /etc/passwd} correspondiente a 
{\tt kiwi} a 
\begin{tscreen}
kiwi:*Xv8Q981g71oKK:102:100:Laura Poole:/home/kiwi:/bin/bash
\end{tscreen}
evitar\'a que {\tt kiwi} se conecte.

\subsection{Poniendo atributos de usuario}
\index{usuarios!poniendo atributos de}
\index{usuarios!poniendo la password de}
\index{passwd@{\tt passwd}}
Despu\'es de que haya creado un usuario, puede necesitar cambiar alg\'un 
atributo de dicho usuario, como puede ser el directorio inicial o la 
clave. La forma m\'as simple de hacer \'esto es cambiar los valores 
directamente en {\tt /etc/passwd}. Para poner clave a un usuario, utilice 
el comando {\tt passwd}. Por ejemplo,
\begin{tscreen}
\# {\em passwd larry}
\end{tscreen}
cambiar\'a la clave de {\tt larry}. S\'olo {\tt root} puede cambiar la 
clave de otro usuario de \'esta forma. Los usuarios pueden cambiar su propia
clave con {\tt passwd} tambi\'en.

\index{int\'erprete de conexi\'on!poni\'endolo con chsh@poni\'endolo con {\tt chsh}}
\index{nombre completo!poni\'endolo con chfn@poni\'endolo con {\tt chfn}}
\index{chfn@{\tt chfn}}
\index{chsh@{\tt chsh}}
\index{usuarios!cambiando el int\'erprete de conexi\'on de}
\index{usuarios!cambiando el nombre completo de}
En algunos sistemas, los comandos {\tt chfn} y {\tt chsh} est\'an 
disponibles, permitiendo a los usuarios el cambiar sus atributos de 
nombre completo e int\'erprete de conexi\'on. Si no, deben pedir al 
administrador de sistemas que los cambie por ellos.

\subsection{Grupos}\label{sec-manage-groups}
\index{grupos}
\index{permisos!grupos}
\index{ficheros!permisos!grupos}
Como hemos citado anteriormente, cada usuario pertenece a uno o m\'as grupos.
La \'unica importancia real de las relaciones de grupo es la perteneciente a
los permisos de ficheros, como dijimos en la secci\'on~\ref{sec-perms}, cada
fichero tiene un ``grupo propietario'' y un conjunto de permisos de grupo
que define de qu\'e forma pueden acceder al fichero los usuarios del grupo.

Hay varios grupos definidos en el sistema, como pueden ser {\tt bin}, 
{\tt mail}, y {\tt sys}. Los usuarios no deben pertenecer a ninguno de estos
grupos; se utilizan para permisos de ficheros del sistema. En su lugar, los
usuarios deben pertenecer a un grupo individual, como {\tt users}. Si se 
quiere ser detallista, se pueden mantener varios grupos de usuarios como por
ejemplo {\tt estudiantes}, {\tt soporte} y {\tt facultad}.

\index{/etc/group@{\tt /etc/group}!formato de}
El fichero {\tt /etc/group} contiene informaci\'on acerca de los grupos.
El formato de cada l\'{\i} nea es
\begin{tscreen}
nombre de grupo:clave:GID:otros miembros
\end{tscreen}
Algunos ejemplos de grupos pueden ser:
\begin{tscreen}
root:*:0: \\
usuarios:*:100:mdw,larry \\
invitados:*:200: \\
otros:*:250:kiwi
\end{tscreen}
\index{usuarios!lista de grupos para}
\index{groups@{\tt groups}}
El primer grupo, {\tt root}, es un grupo especial del sistema reservado para
la cuenta {\tt root}. El siguiente grupo, {\tt users}, es para usuarios 
normales. Tiene un GID de 100. Los usuarios {\tt mdw} y {\tt larry} tienen
acceso a este grupo. Recu\'erdese que en {\tt /etc/passwd} cada usuario tiene
un GID por defecto. Sin embargo, los usuarios pueden pertenecer a m\'as de un
grupo, a\~nadiendo sus nombres de usuario a otras l\'{\i} neas de grupo en 
{\tt /etc/group}. El comando {\tt groups} lista a qu\'e grupos se tiene 
acceso.

El tercer grupo, {\tt invitados}, es para usuarios invitados, y {\tt otros}
es para ``otros'' usuarios. El usuario {\tt kiwi} tiene acceso a \'este 
grupo.

Como se puede ver, el campo ``clave'' de {\tt /etc/group} raramente se 
utiliza. A veces se utiliza para dar una clave para acceder a un grupo.
Esto es raras veces necesario. Para evitar el que los usuarios cambien a
grupos privilegiados (con el comando {\tt newgroup}), se pone el campo de
la clave a ``{\tt *}''.

\index{addgroup@{\tt addgroup}}
\index{groupadd@{\tt groupadd}}
\index{grupos!a\~nadiendo}
\index{grupos!borrando}
Se pueden usar los comandos {\tt addgroup} o {\tt groupadd} para a\~nadir
grupos a su sistema. Normalmente es m\'as sencillo a\~nadir l\'{\i} neas a 
{\tt /etc/group} uno mismo, puesto que no se necesitan m\'as 
configuraciones para a\~nadir un grupo. Para borrar un grupo, s\'olo hay 
que borrar su entrada de {\tt /etc/group}.
