Aprendiendo sobre el Comando Linux – Comando Unix: login


El inicio de sesión se utiliza cuando se inicia sesión en un sistema. También se puede utilizar para cambiar de un usuario a otro en cualquier momento (sin embargo, la mayoría de los shells modernos tienen soporte para esta característica incorporada).

Si no se da un argumento, login solicita el nombre de usuario.

Si el usuario no es root, y si /etc/nologin existe, el contenido de este archivo se imprime en la pantalla, y el login se termina. Esto se utiliza normalmente para evitar los inicios de sesión cuando el sistema se está desconectando.

Si se especifican restricciones especiales de acceso para el usuario en /etc/usertty, éstas deben ser cumplidas, o el intento de login será negado y se generará un mensaje syslog. Véase la sección “Restricciones especiales de acceso”.

Si el usuario es root, entonces el login debe estar ocurriendo en una tty listada en /etc/securetty. Las fallas se registrarán con la función syslog.

Una vez comprobadas estas condiciones, se solicitará y comprobará la contraseña (si se requiere una contraseña para este nombre de usuario). Se permiten diez intentos antes de que se inicie la sesión , pero después de los tres primeros, la respuesta comienza a ser muy lenta. Las fallas de inicio de sesión se informan a través de la función syslog. Esta función también se utiliza para informar de cualquier inicio de sesión de root correcto.

Si el archivo.hushlogin existe, entonces se realiza un inicio de sesión “silencioso” (esto desactiva la comprobación del correo y la impresión de la última hora de inicio de sesión y el mensaje del día). De lo contrario, si /var/log/lastlog existe, se imprime la última hora de inicio de sesión (y se registra el inicio de sesión actual).

Se realizan tareas administrativas aleatorias, como configurar el UID y el GID de la tty. La variable de entorno TERM se conserva si existe (otras variables de entorno se conservan si se utiliza la opción -poption ). Luego se establecen las variables de entorno HOME, PATH, SHELL, TERM, MAIL y LOGNAME. PATH está por defecto en /usr/local/bin:/bin:/usr/bin: . para usuarios normales, y a/sbin:/bin:/usr/sbin:/usr/bin para root. Por último, si no se trata de un inicio de sesión “silencioso”, se imprime el mensaje del día y se comprueba el archivo con el nombre del usuario en /var/spool/mail, y se imprime un mensaje si tiene una longitud distinta de cero.

A continuación, se inicia el shell del usuario. Si no se especifica ninguna shell para el usuario en /etc/passwd, entonces se usa /bin/shis. Si no hay ningún directorio especificado en /etc/passwd, se utiliza / (el directorio raíz se comprueba para el archivo .hushlogin descrito anteriormente).

Opciones

  • -p: Usado por getty(8) para decirle login no destruir el medio ambiente
  • -f: Se utiliza para omitir una segunda autenticación de inicio de sesión. Esto específicamente no funciona para root, y no parece funcionar bien bajo Linux.
  • -h: Utilizado por otros servidores (por ejemplo, telnetd(8)) para pasar el nombre del host remoto a login para que pueda ser colocado en utmp y wtmp. Sólo el superusuario puede usar esta opción.

Restricciones especiales de acceso

El archivo /etc/securetty lista los nombres de los ttys en los que root puede iniciar sesión. Debe especificarse un nombre de un dispositivo tty sin el prefijo /dev/ en cada línea. Si el archivo no existe, root puede iniciar sesión en cualquier tty.

En la mayoría de los sistemas Linux modernos se utiliza PAM (Pluggable Authentication Modules). En los sistemas que no utilizan PAM, el fichero /etc/usertty especifica restricciones de acceso adicionales para usuarios específicos. Si este archivo no existe, no se imponen restricciones de acceso adicionales. El archivo consiste en una secuencia de secciones. Existen tres tipos de secciones posibles: CLASES, GRUPOS y USUARIOS. Una sección CLASSES define clases de ttys y patrones de nombres de host, una sección GROUPS define ttys y hosts permitidos por grupo y una sección USERS define ttys y hosts permitidos por usuario.

Cada línea en este archivo no puede tener más de 255 caracteres. Los comentarios comienzan con # y se extienden hasta el final de la línea.

La sección CLASES

Una sección CLASSES comienza con la palabra CLASSES al principio de una línea en todas las mayúsculas. Cada línea siguiente hasta el comienzo de una nueva sección o el final del archivo consiste en una secuencia de palabras separadas por tabulaciones o espacios. Cada línea define una clase de ttys y patrones de host.

La palabra al principio de una línea se define como un nombre colectivo para los ttys y patrones de host especificados en el resto de la línea. Este nombre colectivo se puede utilizar en cualquier sección posterior de GRUPOS o USUARIOS. Ningún nombre de clase debe aparecer como parte de la definición de una clase para evitar problemas con las clases recursivas.

Un ejemplo de la sección CLASSES:

Clases 
>Clasesmyclass1 tty1 tty2
myclass2 tty3 @.foo.com

Esto define las clases myclass1 y myclass2 como los lados derechos correspondientes.

La sección GRUPOS

Una sección GROUPS define ttys y hosts permitidos por grupo Unix. Si un usuario es miembro de un grupo Unix de acuerdo con /etc/passwd y /etc/group y tal grupo es mencionado en una sección GROUPS en /etc/usertty entonces al usuario se le concede acceso si el grupo lo es.

Una sección GROUPS comienza con la palabra GROUPS en mayúsculas al principio de una línea, y cada línea siguiente es una secuencia de palabras separadas por espacios o tabulaciones. La primera palabra en una línea es el nombre del grupo y el resto de las palabras en la línea especifica los ttys y hosts a los que los miembros de ese grupo tienen acceso. Estas especificaciones pueden implicar el uso de clases definidas en secciones anteriores de CLASES.

Una sección de ejemplo de GRUPOS.

Grupos 
sys tty1 @.bar.edu
stud myclass1 tty4

Este ejemplo especifica que los miembros del grupo sys pueden iniciar sesión en tty1 y desde hosts en el dominio bar.edu. Los usuarios del grupo stud pueden iniciar sesión desde hosts/ttys especificados en la clase myclass1 o desde tty4.

La sección USUARIOS

Una sección USUARIOS comienza con la palabra USUARIOS en mayúsculas al principio de una línea, y cada línea siguiente es una secuencia de palabras separadas por espacios o tabulaciones. La primera palabra en una línea es un nombre de usuario y ese usuario puede iniciar sesión en los ttys y desde los hosts mencionados en el resto de la línea. Estas especificaciones pueden incluir clases definidas en secciones anteriores de CLASES. Si no se especifica un encabezado de sección en la parte superior del archivo, la primera sección es una sección de USUARIOS.

Un ejemplo de la sección USUARIOS:

USERS
>>Países en vías de desarrollozacho tty1 @130.225.16.0/255.255.255.0
azul tty3 myclass2

Esto permite al usuario zacho iniciar sesión sólo en tty1 y desde hosts con direcciones IP en el rango 130.225.16.0 - 130.225.16.16.16.255, y al usuario blue se le permite iniciar sesión desde tty3 y lo que se especifique en la clase myclass2.

Puede haber una línea en una sección USUARIOS que comience con un nombre de usuario de *. Esta es una regla por defecto y se aplicará a cualquier usuario que no coincida con ninguna otra línea.

Si tanto una línea de USUARIO como una línea de GRUPO coinciden con un usuario, se le permite al usuario el acceso desde la unión de todos los ttys/hosts mencionados en estas especificaciones.

Orígenes

Las especificaciones de patrón tty y host utilizadas en la especificación de clases, grupos y acceso de usuarios se denominan orígenes. Una cadena de origen puede tener uno de estos formatos:

  • El nombre de un dispositivo tty sin el prefijo /dev/, por ejemplo, tty1 o ttyS0.
  • La cadena @localhost, lo que significa que el usuario puede hacer telnet/rlogin desde el host local al mismo host. Esto también permite al usuario, por ejemplo, ejecutar el comando: xterm -e /bin/login .
  • Un sufijo de nombre de dominio como @.some.dom, lo que significa que el usuario puede iniciar sesión/telnet desde cualquier host cuyo nombre de dominio tenga el sufijo.some.dom.
  • Un rango de direcciones IPv4, escritas @x.x.x.x.x.x/y.y.y.y.y, donde x.x.x.x es la dirección IP en la usual notación decimal punteada cuádruple, y y.y.y.y.y es una máscara de bits en la misma notación que especifica qué bits de la dirección deben compararse con la dirección IP del host remoto. Por ejemplo, @130.225.16.0/255.255.254.0 significa que el usuario puede rlogin/telnetar desde cualquier host cuya dirección IP esté en el rango 130.225.16.0 - 130.225.17.255.

Cualquiera de los orígenes anteriores puede ser precedido por una especificación de tiempo de acuerdo con la sintaxis:

timespec := '['  [':' "  hora ::= '0' | '1' | .... | 23'
hourspec :=

Por ejemplo, el origen [mon:tue:wed:thu:fri:8-17]tty3 significa que se permite el acceso de lunes a viernes entre las 8 y las 17:59 (5:59 p.m.) en tty3. Esto también muestra que un rango de horas a-b incluye todos los momentos entre a:00 y b:59. Una especificación de una sola hora (como 10) significa el período de tiempo entre 10 y 10:59.

Si no se especifica ningún prefijo de tiempo para un tty o host, el inicio de sesión desde ese origen está permitido en cualquier momento. Si da un prefijo de tiempo, asegúrese de especificar tanto un conjunto de días como una o más horas o intervalos de horas. Una especificación de tiempo puede no incluir ningún espacio en blanco.

Si no se da ninguna regla por defecto, los usuarios que no coincidan con ninguna línea /etc/usertty pueden iniciar sesión desde cualquier lugar como es el comportamiento estándar.

Utilice el comando man ( % man) para ver cómo se utiliza un comando en su equipo particular.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *