Quando abrir um terminal não requer um login?

2

Falando sobre o Linux e, em particular, sobre os sistemas do Ubuntu (a partir de 14.04):

Caso 1 - Como apontado em esta resposta , os processos que alocam um pseudo-terminal não precisam para fazer um login: por exemplo, cups . De qualquer forma, eles são não listados na saída do comando who .

Caso 2 - Se eu fizer um login na GUI, o executável gnome-terminal (ou xfce4-terminal , de acordo com o ambiente de desktop) pode abrir muitos pseudo-terminais, com meu usuário já logado, e para cada pseudo-terminal aberto, uma nova linha na saída do comando who aparecerá.

Então,

1) Tanto um processo quanto um usuário podem abrir um terminal, portanto devem ter alguns recursos comuns (porque podem agir de maneira semelhante) e algumas diferenças. Do ponto de vista do shell do sistema , qual é a diferença entre um usuário (que obviamente precisa fazer o login quando abre um terminal e está listado no comando who ) e um processo (que não precisa fazer o login para usar um terminal e quem não está listado no comando who )? Minha dúvida é sobre o fato de que um processo pode abrir um terminal quando ele quiser e sem qualquer verificação pelo sistema, enquanto um usuário deve sempre fazer um login.

2) Como o login exclusivo na GUI "desbloqueia" todos os logins para os pseudo-terminais abertos pelo emulador de terminal? Isto não é válido se eu abrir /dev/tty1 através de Ctrl Alt F1 .

    
por BowPark 09.05.2016 / 11:08

2 respostas

1

Os processos estão executando instâncias de binários executáveis. Cada processo, similarmente a cada arquivo, pertence a um determinado usuário. (É um pouco mais complicado porque há vários IDs de usuário para um processo, mas na maioria das vezes são os mesmos.)

Uma linha de terminal (tty) pode ser aberta por qualquer processo a qualquer momento, assim como um processo pode abrir / criar um arquivo, um soquete TCP e assim por diante. Não há nada de especial nos terminais a esse respeito.

É um antigo conceito de nível de usuário que existe um banco de dados utmp / wtmp mantendo o controle dos logins. Os gerenciadores gráficos de login atualizam os registros referentes a todo o login gráfico (faz sentido mais ou menos), e os emuladores de terminal atualizam voluntariamente (ou não) os registros pertencentes à linha do terminal (isso, na minha opinião, como detalhado em < href="https://bugzilla.gnome.org/show_bug.cgi?id=747046"> link , não faz sentido algum. Isso vem dos dias em que os terminais eram terminais reais em vez de emuladores gráficos, com certeza fazia sentido acompanhar quem estava logado de onde.

Na minha opinião, é uma tradição obsoleta e ruim dizer que abrir um emulador de terminal gráfico significa "fazer login" ou que uma entrada de log deve ser criada para janelas / guias de terminal aberto e que who e utilitários semelhantes devem relatar isso.

Utilitários como who imprimem as informações com base nesses arquivos utmp / wtmp mais ou menos adequadamente mantidos, o que é novamente de usabilidade e confiabilidade bastante limitadas.

    
por 10.05.2016 / 09:28
2

Com base no esclarecimento, tenho certeza de que você usa as palavras user e process incorretamente. Parece-me que você acredita que algo é um usuário ou um processo (exatamente um deles). Isso absolutamente não é o caso.

Toda instância em execução de um código de programa executável (independentemente de ter sido iniciada "automaticamente" (por exemplo, como parte do processo de inicialização) ou por interação do usuário (por exemplo, clicando com o mouse)) é chamada de process . Todo e qualquer processo tem um user associado a ele (para processos de inicialização, esses são geralmente o superusuário chamado root ).

    
por 10.05.2016 / 09:32