Qual das opções fornecidas é VERDADEIRA sobre o shell de login?

Qual das opções fornecidas é VERDADEIRA sobre o shell de login?

Qual das opções fornecidas é VERDADEIRA sobre o shell de login?

  1. O shell de login varia toda vez que o usuário efetua login. O kernel decide sobre a disponibilidade do shell durante o login.
  2. O shell de login é fixo para todos os usuários em um sistema específico. Não pode ser configurado.
  3. O shell de login pode ser configurado pelo administrador no arquivo /etc/passwd.
  4. Nenhuma das acima.

Responder1

O kernel não sabe nada sobre os usuários além de seu ID numérico como uma tag em certas coisas (processos, arquivos). Não tem noção de “login”, que acontece no terreno do usuário.

O programa que trata do processo de login ( loginem um console em modo texto, umgerenciador de exibiçãoem um console gráfico, um daemon como sshdou telnetdpara logins remotos, etc.) primeiro autentica o usuário e executa outras tarefas.PAMé frequentemente usado; temmuitos recursosrelacionado à autenticação, registro, bancos de dados de usuários, etc. A última etapa do processo de login (quando bem-sucedido), depois que o programa passou da execução como root para a execução como usuário desejado, é invocar o shell de login.

O shell de login é determinado no banco de dados da conta do usuário. Existem vários tipos de bancos de dados de usuários; os mais comuns são/etc/passwd(ou, raramente, algum outro arquivo configurado atravésNSS), que é um arquivo de texto simples encontrado na máquina local, eNEIeLDAPque são bancos de dados em rede usados ​​em redes onde contas podem ser usadas em várias máquinas.

Os usuários podem alterar seu shell com ochshcomando para contas locais, comypchshpara contas NIS, ou comchsh.ldappara contas LDAP. Em alguns lugares, o chshcomando é configurado para funcionar com qualquer tipo de banco de dados de conta em uso. Os usuários só podem alternar entre shells listados no arquivo /etc/shells; isso é tanto uma medida de segurança (presume-se que os usuários cujo shell não esteja listado tenham contas restritas e não possam alterá-las) quanto uma medida de segurança (mudar para um shell inexistente ou restrito pode efetivamente bloquear a conta). O administrador pode alterar o shell de login de qualquer conta executando o chshcomando ou editando o banco de dados diretamente.

Em um sistema configurado normalmente, programas shell úteis serão listados /etc/shellse esses programas funcionarão. (1) é tecnicamente verdadeiro porque o shell de login pode variar (o usuário ou administrador pode ligar chsha qualquer momento), mesmo que normalmente não o faça, e é claro que iniciar qualquer programa envolve fazer com que o kernel carregue o arquivo do programa e falhará se o arquivo não existe ou está corrompido.

O programa de login executa o shell de login com o argumento 0 definido para o nome do programa com um travessão -antes do nome. Por exemplo, se o shell de login for /bin/bash(o caminho completo é necessário, nenhuma pesquisa $PATHé realizada), então o argumento 0 será -bash. O argumento 0 normalmente é o nome do programa; o traço extra informa ao shell para agir como um shell de login. Os shells de login executam arquivos extras na inicialização, por exemplo, /etc/profilee ~/.profile; verDiferença entre Shell de login e Shell sem login?para mais detalhes sobre esta parte.


Este exame de múltipla escolha não é bem elaborado porque cada opção pode ser interpretada como verdadeira.

(1): de fato, o shell de login é determinado cada vez que o usuário efetua login. Também é verdade que o kernel decide se o shell está disponível durante o processo de login. Então, tecnicamente (1) é verdade (e a correção técnica é a melhor forma de correção, certo?). Mas (1) é muito enganador porque o kernel não decide qual é o shell de login, nem sequer tem um conceito de login ou shell.

(2) não é verdade em geral, pois é possível que diferentes usuários tenham diferentes shells de login. No entanto, existem configurações onde, por uma razão ou outra, todos os usuários têm o mesmo shell — por exemplo, redes heterogêneas onde as contas são compartilhadas entre máquinas e o único shell que tem garantia de estar disponível em qualquer lugar é o /bin/sh.

(3) é provavelmente a resposta pretendida, porque /etc/passwdé um local onde o shell de login pode ser configurado pelo administrador. No entanto, /etc/passwdnão deve ser editado diretamente, mas através do vipwcomando ou através de um comando como chsh. Além disso, contas não locais não são armazenadas em arquivos /etc/passwd.

Responder2

Vamos verificar alguns fatos:

  1. Teste-o. echo $SHELL. Agora saia e faça login novamente. echo $SHELL. Enxágue, lave e repita. A mesma resposta sempre.

  2. O shell de login é derivado do conteúdo de /etc/passwdtodos os usuários. O valor definido nesse arquivo será o valor do shell de login para cada usuário no sistema. É possível que um usuário execute outro shell, mas não será seu shell de login sem que o valor seja definido em /etc/passwd.

    Você pode verificar isso tentando o comando de vários shells executados manualmente:

    bash -c "get-shell"
    sh   -c "get-shell"
    zsh  -c "get-shell"
    

    Todos esses comandos fornecerão a mesma saída, não importa em qual shell você os execute, porque o valor do shell de login não é determinado pelo shell que o usuário escolhe executar, mas por aquele definido para ele /etc/passwd.

    Observe que se o seu sistema não tiver get-shellvocê pode substituir getent passwd $(whoami) | cut -d: -f7dentro dos comandos acima para determinar o shell de login do usuário.

  3. Isso dependeria muito do nível de conhecimento do administrador. Editar o /etc/passwdarquivo requer conhecimento de como iniciar um editor de texto como root e destreza para não bagunçar nem mesmo um único caractere do arquivo. Embora um ninja possa fazer isso, um administrador que ler man chshverá que esse é o programa para ajustar os shells de login:

    DESCRIÇÃO
    chsh é usado para alterar seu shell de login

  4. Se pelo menos uma das respostas acima for verdadeira, esta deve ser falsa.

informação relacionada