Estou lendo o APUE e ele continua se referindo ao login
programa, mas ainda não sei o que ele está fazendo no meu sistema operacional (Ubuntu).
§8.11:
Normalmente, o ID de usuário real é definido pelo
login(1)
programa quando efetuamos login e nunca muda. Porlogin
ser um processo de superusuário, ele define todos os três IDs de usuário quando chama setuid
ps aux | grep login
:
root 840 0.0 0.0 70732 6120 ? Ss 15:13 0:00 /lib/systemd/systemd-logind
root 1120 0.0 0.0 419680 9468 ? Sl 15:13 0:00 gdm-session-worker [pam/gdm-autologin]
tianhe 1151 0.0 0.1 445184 20540 ? SLl 15:13 0:05 /usr/bin/gnome-keyring-daemon --daemonize --login
tianhe 10838 0.0 0.0 21536 1060 pts/0 S+ 21:50 0:00 grep --color=auto login
Então, em resumo, que funcionalidade esse login
programa oferece para o sistema operacional?
Em que circunstâncias é usado ou executado?
Btw, como é login
comparado a ssh
?
Não é um comando para você executar interativamente.
-manuallogin
. IBM AIX 7.2Costumava ser. Na década de 1980, isso funcionaria, e os usuários do C-shell ainda tinham um
login
comando embutido de conveniência que seriaexec
o programa externologin
, sobrepondo o processo do shell com esse programa, que era set-UID para o superusuário.Mas os sistemas operacionais não funcionam hoje em dia como o BSD dos anos 80. Uma sessão de login (que é o tipo de sessão que está sendo discutida lá, a propósito) passa por muitos alçapões unidirecionais (contextos de segurança do usuário, grupos de controle, marcadores de "contaminação" de UID alterado, AIX
setsenv
e assim por diante) para ela para ser viável iniciar corretamente uma nova sessão de login para um usuário arbitrário de um processo que já está em uma sessão de login do usuário.E de qualquer forma, devido ao advento do PAM na década de 1990, o processo de shell que seria sobreposto com o novo
login
programa não é mais o processo mais alto da árvore como era na década de 1980. Agora é filho de um processo de supervisão, que está fazendo a configuração e desmontagem da sessão PAM.É por isso que "dæmonization" é uma falácia e é por isso que executar
login
de dentro de uma sessão de login existente não é realmente sensato.É um programa de sistema.
login
é invocado pelos serviços de login do terminal , geralmente diretamente, após o serviço ou a infraestrutura de gerenciamento de serviço configurar algumas variáveis de ambiente, abrir o dispositivo terminal e inicializar/enviar a disciplina de linha, defini-lo como o terminal de controle e inicializar o terminal com alguns seqüências de controle.ttymon
, parte do Service Access Facility. Você ainda pode vê-los hoje no OpenSolaris e seus derivados, como Illumos e Schillix.autovt@something
getty@something
getty
login
ttylogin@something
/etc/ttys
tabela.Se você efetuou login em um terminal virtual ou em um terminal real, foi ele
login
que solicitou sua senha e, possivelmente, seu nome de usuário também, e então começou a invocar seu shell de login interativo.login
não é usado pelo login SSH. Nem é usado pelo login da GUI . Ambos operam de forma diferente, usando outros programas.login
espera estar conversando com um terminal, com uma Interface Textual do Usuário.Ele é usado pelo antigo sistema rlogin de Berkeley, mas você não deveria estar empregando isso hoje em dia. Uma discussão mais aprofundada dos chamados comandos "r-" de Berkeley está muito além do escopo desta resposta. Então, vou apenas dizer que isso é outra coisa que não é mais feita do jeito que era na década de 1980.
Leitura adicional
getty
geradoinit
é uma coisa do passado. . Respostas Frequentes.Você provavelmente faz login em uma sessão de janela, neste caso um gerenciador de exibição
xdm
,gdm
,kdm
... fará o login. No entanto, existem outras maneiras de fazer login. Por exemplo, em uma rede que podemos usar (como você apontou)ssh
. Se fizermos login localmente, mas não em um sistema de janelas, precisaremos de um programa de login diferente. É aqui que entra o login.Tente pressionar ctrlaltf1, login e veja quais processos estão sendo executados. O que você fez login.