Crear un usuario que no pueda obtener un shell interactivo

17

¿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?

usuario2914
fuente

Respuestas:

9

El /etc/passwdarchivo 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/shu 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/falsecomo en

syslog:x:101:102::/home/syslog:/bin/false

El syslog del pseudo-usuario posee /var/log/syslogy 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.

msw
fuente
9

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 useraddhay una opción para configurar el shell de inicio de sesión, -so --shell. También puede crear un usuario normalmente, de cualquier manera que desee (¿lo cual supongo que ya sabe?), Luego editar /etc/passwdcomo en la respuesta de msw .

phunehehe
fuente
3

Sí, cambiar el shell en el archivo de contraseñas (/ etc / passwd) a algún programa que no no permiten una salida al shell.

si quieres ser un bofh / bin / false harás exactamente lo que quieras.

David Harris
fuente
-1
adduser username -s /sbin/nologin
H2 Mac
fuente
2
Observe que el nombre de usuario se especifica en la pregunta como "John". No estaría de más usar un poco de prosa para explicar qué está haciendo su comando y por qué cumple con los requisitos.
Jeff Schaller