¿Cuál de las opciones dadas es VERDADERA sobre el shell de inicio de sesión?
- El shell de inicio de sesión varía cada vez que el usuario inicia sesión. El kernel decide la disponibilidad del shell durante el inicio de sesión.
- El shell de inicio de sesión está fijo para todos los usuarios de un sistema en particular. No se puede configurar.
- El administrador puede configurar el shell de inicio de sesión en el archivo /etc/passwd.
- Ninguna de las anteriores.
Respuesta1
El kernel no sabe nada sobre los usuarios más que su ID numérica como una etiqueta en ciertas cosas (procesos, archivos). No tiene la noción de “iniciar sesión”, que ocurre en el terreno de los usuarios.
El programa que maneja el proceso de inicio de sesión ( login
en una consola en modo texto, ungestor de pantallaen una consola gráfica, un demonio como sshd
o telnetd
para inicios de sesión remotos, etc.) primero autentica al usuario y realiza otras tareas.PAMse utiliza a menudo; Tienemuchas capacidadesrelacionado con autenticación, registro, bases de datos de usuarios, etc. El último paso del proceso de inicio de sesión (cuando tiene éxito), después de que el programa haya pasado de ejecutarse como root a ejecutarse como el usuario deseado, es invocar el shell de inicio de sesión.
El shell de inicio de sesión se determina a partir de la base de datos de la cuenta del usuario. Existen varios tipos de bases de datos de usuarios; los más comunes son/etc/passwd
(o, rara vez, algún otro archivo configurado a través deNSS), que es un archivo de texto simple que se encuentra en la máquina local, yEstadounidenseyLDAPque son bases de datos en red que se utilizan en redes donde las cuentas se pueden utilizar desde varias máquinas.
Los usuarios pueden cambiar su caparazón con elchsh
comando para cuentas locales, conypchsh
para cuentas NIS, o conchsh.ldap
para cuentas LDAP. En algunos lugares, el chsh
comando está configurado para funcionar con cualquier tipo de base de datos de cuenta que esté en uso. Los usuarios sólo pueden cambiar entre shells enumerados en el archivo /etc/shells
; Esto es tanto una medida de seguridad (se supone que los usuarios cuyo shell no aparece en la lista tienen cuentas restringidas y no pueden cambiar) como una medida de seguridad (cambiar a un shell restringido o inexistente podría bloquear efectivamente la cuenta). El administrador puede cambiar el shell de inicio de sesión de cualquier cuenta ejecutando el chsh
comando o editando la base de datos directamente.
En un sistema configurado normalmente, se enumerarán programas de shell útiles /etc/shells
y esos programas funcionarán. (1) es técnicamente cierto porque el shell de inicio de sesión puede variar (el usuario o administrador puede llamar chsh
en cualquier momento) incluso si normalmente no es así y, por supuesto, iniciar cualquier programa implica que el kernel cargue el archivo del programa y fallará si el El archivo no existe o está dañado.
El programa de inicio de sesión ejecuta el shell de inicio de sesión con el argumento 0 establecido en el nombre del programa con un guión -
antes del nombre. Por ejemplo, si el shell de inicio de sesión es /bin/bash
(la ruta completa es necesaria, no se realiza ninguna búsqueda $PATH
), entonces el argumento 0 será -bash
. El argumento 0 normalmente es el nombre del programa; el guión adicional le indica al shell que actúe como un shell de inicio de sesión. Los shells de inicio de sesión ejecutan archivos adicionales al inicio, por ejemplo, /etc/profile
y ~/.profile
; ver¿Diferencia entre Shell de inicio de sesión y Shell sin inicio de sesión?para más detalles sobre esta parte.
Este examen de opción múltiple no está bien diseñado porque cada opción podría interpretarse como verdadera.
(1): de hecho, el shell de inicio de sesión se determina cada vez que el usuario inicia sesión. También es cierto que el kernel decide si el shell está disponible durante el proceso de inicio de sesión. Entonces, técnicamente (1) es cierto (y la corrección técnica es la mejor forma de corrección, ¿verdad?). Pero (1) es muy engañoso porque el kernel no decide cuál es el shell de inicio de sesión como tal, ni siquiera tiene un concepto de inicio de sesión o shell.
(2) no es cierto en general, ya que es posible que diferentes usuarios tengan diferentes shells de inicio de sesión. Sin embargo, hay configuraciones en las que, por una razón u otra, todos los usuarios tienen el mismo shell; por ejemplo, redes heterogéneas donde las cuentas se comparten entre máquinas y el único shell que se garantiza que estará disponible en todas partes es /bin/sh
.
(3) es probablemente la respuesta deseada, porque /etc/passwd
es un lugar donde el administrador puede configurar el shell de inicio de sesión. Sin embargo, /etc/passwd
no debe editarse directamente, sino mediante el vipw
comando o mediante un comando como chsh
. Además, las cuentas no locales no se almacenan en /etc/passwd
.
Respuesta2
Comprobemos algunos datos:
Pruébalo.
echo $SHELL
. Ahora cierre sesión y vuelva a iniciar sesión.echo $SHELL
. Enjuague, lave, repita. La misma respuesta cada vez.El shell de inicio de sesión se deriva del contenido de
/etc/passwd
para todos los usuarios. El valor establecido en ese archivo será el valor del shell de inicio de sesión para cada usuario del sistema. Es posible que un usuario ejecute otro shell, pero no será su shell de inicio de sesión sin que el valor esté configurado en/etc/passwd
.Puede verificar esto probando el comando desde varios shells que ejecuta manualmente:
bash -c "get-shell" sh -c "get-shell" zsh -c "get-shell"
Todos estos comandos le darán el mismo resultado sin importar en qué shell los ejecute porque el valor del shell de inicio de sesión no está determinado por el shell que el usuario elija ejecutar, sino por el configurado para él
/etc/passwd
.Tenga en cuenta que si su sistema no lo tiene,
get-shell
puede sustituirlogetent passwd $(whoami) | cut -d: -f7
dentro de los comandos anteriores para determinar el shell de inicio de sesión del usuario.Esto dependería en gran medida del nivel de conocimiento del administrador. Editar el
/etc/passwd
archivo requiere conocimiento de cómo iniciar un editor de texto como root y la destreza para no estropear ni un solo carácter del archivo. Si bien un ninja podría lograr esto, un administrador que leaman chsh
vería que es el programa para ajustar los shells de inicio de sesión:DESCRIPCIÓN
chsh se utiliza para cambiar su shell de inicio de sesiónSi al menos una de las respuestas anteriores es verdadera, debe ser falsa.