% 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 (<> 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} .