Qual é o objetivo pretendido de um shell de login?

1

O manual do Bash diz:

A login shell is one whose first character of argument zero is‘ -’, or one invoked with the --login option.

Ele define um shell de login em termos das maneiras de iniciar um shell de login.

Alternativamente, uma shell de login pode ser definida em termos de sua finalidade?

Por exemplo, um shell de login pode ser definido como um shell que requer que o usuário efetue login? Por exemplo, em um shell bash nonlogin interativo, quando executo bash --login para criar um shell de login bash, não preciso fazer login. É porque meu nome de usuário e senha são armazenados em cache e reutilizados implicitamente ou simplesmente não são usados? t realizar o trabalho de login?

Se um shell de login não precisa necessariamente efetuar login, qual é o propósito pretendido que pode caracterizar um shell de login de um shell que não seja de login?

Obrigado.

    
por Tim 06.04.2018 / 14:07

2 respostas

9

O login é feito por outras ferramentas além do shell, por exemplo, login , ou pelo gerenciador da área de trabalho (com a ajuda do PAM e de várias outras ferramentas).

O propósito de um shell de login não é para manipular o login, ele deve se comportar apropriadamente como o primeiro shell em uma sessão de login: principalmente, isso significa processar arquivos de inicialização que só devem ser processados uma vez por sessão de login e proteger a sessão de login contra interação indesejada com determinados recursos do sistema (suspensão de tarefas em particular).

As especificações de um shell de login, pelo menos implementado no Bash , são as segue:

  • um shell de login processa comandos de /etc/profile e, em seguida, o primeiro arquivo encontrado entre ~/.bash_profile , ~/.bash_login e ~/.profile (a menos que seja um shell de login não interativo iniciado sem a opção --login );
  • ao sair de um shell de login, é executado logout em vez de exit ;
  • sair de um shell de login desliga todos os trabalhos;
  • um shell de login não pode ser suspenso;
  • um shell de login define a variável HOME (exceto no modo POSIXly-correto);
  • um shell de login define a opção login_shell shell.
por 06.04.2018 / 14:19
2

Você já respondeu a sua pergunta.

when I run bash --login to create a bash login shell, I don't have to log in

Isso significa que você já está conectado e já tem um ambiente que permite iniciar o aplicativo com seus direitos de usuário.
Felizmente, você não precisa digitar sua senha, cada um iniciando um aplicativo assim que estiver logado.
A principal diferença é que com a opção -l ou --login :

it first attempts to read and execute commands from /etc/profile and ~/.profile, in that order.

Extrair de man bash

O objetivo seria se beneficiar de /etc/profile e ~/.profile . bash é um shell não é o componente que manipula uma sessão do usuário. PAM é o componente linux que é responsável por identificá-lo com seu login / senha

    
por 06.04.2018 / 14:13

Tags