% Parte del material obtenido de colaboraciones de Pedro Pablo Fabrega
\section{Entrar en el sistema}

\subsection{Introducción}
Los tipos de trabajos que se pueden realizar sobre un Unix cualquiera,
pero particularmente sobre GNU/Linux, difieren en la forma de
interactuar con el usuario y el formato de la interfaz de usuario.  A
simple vista, se puede decir que hay dos tipos de acceso interactivo
en lo que respecta al formato de la interfaz: usando interfaz gráfica
o usando interfaz de texto. En este curso se le dará especial
importancia a la interfaz de textos, ya que es lo más normal que se
encuentra en los equipos que funcionan como servidores, y las
herramientas basadas en interfaz de texto tienen mayor tiempo de
desarrollo, que las otras, lo que las hace más convenientes para la
tarea de administrar un sistema GNU/Linux.

\subsection{Iniciando una sesión}

Existen diferentes métodos para poder conectar los terminales al
sistema:

\begin{itemize}
\item En primer lugar podemos conectarnos a un GNU/Linux a través de
  el \emph{puerto serie (RS232)}, con una terminal no inteligente o
  bien con otro equipo y un emulador de terminales. En ambos casos
  existe un programa que atiende las solicitudes de conexión a través
  del puerto serie. Cuando hay una solicitud de conexión, este
  programa la atiende solicitando al usuario que se identifique ante
  el sistema. Cuando termina la conexión, este programa se reactiva
  para seguir atendiendo nuevas solicitudes.
\item Mediante \emph{tarjeta de red}. En este caso, tenemos un
  programa que escucha las solicitudes de conexión a través de la
  tarjeta de red. Cuando llega una solicitud este programa se desdobla
  de forma que una parte atiende la conexión y otra continúa
  atendiendo nuevas conexiones. Así, podemos tener más de una conexión
  a través de la tarjeta de red. Algunos servicios que proveen esta
  funcionalidad son el \comando{telnet} (sin encriptación de datos) y
  el \comando{ssh} (Secure Shell, con encriptación de datos). Esto se
  verá más adelante.
\item La \emph{consola}. Evidentemente, en un sistema GNU/Linux
  también podemos trabajar desde el teclado y monitor que están
  conectados directamente al sistema. Normalmente en la mayoría de las
  distribuciones, en la consola hay hasta 6 terminales virtuales,
  accediendo a cada una de ellas con \boton{Alt-F1} a \boton{Alt-F6}.
\end{itemize}

Una vez que se ha conseguido conectar a un sistema GNU/Linux tenemos
que iniciar una sesión de trabajo. GNU/Linux es un sistema
multiusuario, y esto exige que el usuario se presente al sistema y que
este lo acepte como usuario reconocido. Así, cada vez que iniciamos
una sesión GNU/Linux nos responde con

\begin{verbatim}
Login:  
\end{verbatim}

a lo que se debe responder con el nombre de usuario. Acto seguido,
GNU/Linux solicita una clave para poder comprobar que el usuario es
quien dice ser:

\begin{verbatim}
Password:
\end{verbatim}

En este caso se teclea la clave de acceso. Por motivos de seguridad
esta clave no aparecerá en la pantalla. Si la pareja nombre de
usuario/clave es correcta el sistema inicia un intérprete de comandos
con el que se puede trabajar.

Habitualmente será el símbolo \comando{\$}, aunque puede ser también
el símbolo \comando{\%} (si usamos un shell C). Cuando es el
administrador (root) quien está trabajando en el sistema, el indicador
que aparece es \comando{\#}.


\subsection{La base de datos de los usuarios}

Se ha visto que para iniciar una sesión de trabajo en un sistema GNU/Linux
se debe suministrar al sistema una pareja de nombre de
usuario/clave.  Estos datos se almacenan en un archivo llamado
\archivo{/etc/passwd}.  Este archivo contiene una línea por cada
usuario del sistema. Cada línea consta de una serie de campos
separados por dos puntos (:). Estos campos son, en el orden que
aparecen:

\begin{enumerate}
\item \textbf{Nombre de usuario}. Es es nombre con el que no
  presentamos al sistema, con el que tenemos que responder a
  \comando{Login:} y por el que nos identifica el sistema.
\item \textbf{Clave cifrada}. El siguiente campo es la clave de acceso
  al sistema. Esta clave no se guarda como se introduce, sino que se
  almacena transformada mediante el algoritmo \textbf{DES} para que
  nadie pueda averiguarla.
\item \textbf{UID}\label{UID}. Identificador de usuario. Es el número
  de usuario que tiene cada cuenta abierta en el sistema. El sistema
  trabaja de forma interna con el UID, mientras que nosotros
  trabajamos con el nombre de usuario. Ambos son equivalentes.
\item \textbf{GID}\label{GID}. Identificador de grupo. Es el número de
  grupo principal al que pertenece el usuario.
\item \textbf{Nombre completo de usuario}. Este es un campo meramente
  informativo, en el que se suele poner el nombre completo del
  usuario.
\item \textbf{Directorio personal}. Este campo indica el directorio
  personal de un usuario, en el cual el usuario puede guardar su
  información.
\item \textbf{Intérprete de comandos}. El último campo indica un
  programa que se ejecutará cuando el usuario inicie una sesión de
  trabajo.  Normalmente este campo es un intérprete de comandos
  (<<shell>> en inglés) que proporciona una línea de órdenes para que
  el usuario trabaje. Ejemplo:
\end{enumerate}

\begin{verbatim}
usuario:x%6YkH$Ss:505:705:Usuario:/home/usuario:/bin/bash  
   ^          ^    ^   ^     ^           ^          ^  
   |          |    |   |     |           |          | 
   |          |    |   |     |           |  I. de comandos 
   |          |    |   |     |      directorio personal 
   |          |    |   |  Nombre completo del usuario
   |          |    |  Número de grupo (GID)    
   |          |   Número de usuario (UID)  
   |       Clave cifrada 
 Nombre de usuario    
 
\end{verbatim}


.
