¿Qué son los shell interactivos y no interactivos?
Preguntas: Cree un usuario john que no debería obtener un shell interactivo.
¿Cómo podemos hacer esto?
El /etc/passwd
archivo tiene como último elemento en la línea de un usuario el programa que se ejecutará al iniciar sesión. Para usuarios normales, esto generalmente se establece en /bin/sh
u otro shell (por ejemplo, bash, zsh).
Tradicionalmente, las identidades que se utilizan para poseer procesos o archivos u otros recursos tienen su "shell" establecido /bin/false
como en
syslog:x:101:102::/home/syslog:/bin/false
El syslog del pseudo-usuario posee /var/log/syslog
y es el único UID que tiene permiso de escritura para ese archivo, pero no se puede iniciar sesión como syslog del usuario ya que no hay un intérprete de comandos para ejecutar.
Con respecto a la pregunta que intenta responder:
Cree un usuario john que no debería obtener un shell interactivo.
La pregunta significa "Crear un usuario llamado john
que no podrá iniciar sesión y ejecutar comandos desde un shell". Interactive describe la forma en que funciona el shell: el usuario escribe algo, y el shell hace algo en consecuencia (hay un tipo de comunicación entre el usuario y el shell). La palabra "interactivo" realmente no agrega ninguna información a la pregunta, porque siempre que haya un usuario escribiendo comandos, la sesión de shell es interactiva.
También está el modo no interactivo, donde el usuario guarda una serie de comandos que desea ejecutar en un archivo (llamado script de shell) y luego ejecuta el archivo. Algunos comandos se comportan de manera diferente dependiendo de si el shell se ejecuta de forma interactiva o no interactiva. Puede leer más aquí (este documento es para bash
, pero el mismo concepto se aplica para otros shells).
Sobre cómo crear un usuario así, si hojea man useradd
hay una opción para configurar el shell de inicio de sesión, -s
o --shell
. También puede crear un usuario normalmente, de cualquier manera que desee (¿lo cual supongo que ya sabe?), Luego editar /etc/passwd
como en la respuesta de msw .
adduser username -s /sbin/nologin