O que são shell interativo e não interativo?
Perguntas: Crie um usuário john que não deve obter um shell interativo.
Como podemos fazer isso?
O /etc/passwd
arquivo tem como último item na linha do usuário o programa a ser executado no login. Para usuários normais, isso normalmente é definido como /bin/sh
ou outro shell (por exemplo, bash, zsh).
Tradicionalmente, identidades usadas para possuir processos ou arquivos ou outros recursos têm seu "shell" definido /bin/false
como em
syslog:x:101:102::/home/syslog:/bin/false
O syslog do pseudo-usuário possui /var/log/syslog
e é o único UID que possui permissão de gravação para esse arquivo, mas não é possível efetuar login como syslog do usuário, pois não há nenhum interpretador de comando a ser executado.
Em relação à pergunta que você está tentando responder:
Crie um usuário john que não deve obter um shell interativo.
A pergunta significa "Crie um usuário nomeado john
que não poderá efetuar login e executar comandos a partir de um shell". Interativo descreve a maneira como o shell funciona: o usuário digita algo e o shell faz algo de acordo (existe um tipo de comunicação entre o usuário e o shell). A palavra "interativo" não adiciona realmente nenhuma informação à pergunta, porque enquanto houver um usuário digitando comandos, a sessão do shell será interativa.
Há também o modo não interativo, no qual o usuário salva uma série de comandos que deseja executar em um arquivo (chamado de shell script) e executa o arquivo posteriormente. Alguns comandos se comportam de maneira diferente, dependendo se o shell é executado de maneira interativa ou não interativa. Você pode ler mais aqui (este documento é para bash
, mas o mesmo conceito se aplica a outros shells).
Sobre como criar esse usuário, se você percorrer, man useradd
existe uma opção para definir o shell de login, -s
ou --shell
. Você também pode criar um usuário normalmente, da maneira que quiser (o que eu suponho que você já saiba?), E editar /etc/passwd
como na resposta do msw .
adduser username -s /sbin/nologin