Linux Essencial/Lição Login, desligamento e reinicialização do Sistema

Origem: Wikilivros, livros abertos por um mundo aberto.
  • Objetivo(s): Demonstrar como são feitos o Login, o Desligamento e a Reinicialização dos Sistemas Linux.
  • Direitos autorais e licença: Veja notas de direitos autorais e licença no final da lição.

Login e Senha[editar | editar código-fonte]

Por padrão, para usar o Sistema Operacional, é necessário abrir uma sessão no qual o usuário se identificará em um processo denominado “log in” ou “log on”, que significa “registrar entrada”. Assim surgiu o termo computacional “login”, que exige um método de identificação a partir do fornecimento de um nome de usuário e a senha que a ele corresponde. Isso ocorre porque o sistema é multiusuário, ou seja permite acesso simultâneo de múltiplos usuários ao computador.

Nota: outra forma de identificação que está se tornando cada vez mais comum é a biométrica, que utiliza uma parte do corpo humano como identificação. Assim, uma impressão digital ou íris podem substituir o tradicional modo de identificação por nome de usuário e senha.

Nome de usuário[editar | editar código-fonte]

As seguintes regras e sugestões são aplicáveis para os nomes de usuários:

  • primeiro caractere deve ser uma letra do alfabeto romano (não acentuada). Vejamos alguns exemplos válidos: Anibal, alvaro e BeTo; vejamos também alguns exemplos não-válidos: 1amigo, álvaro e ^teste; @rroba.
  • não é permitido utilizar os seguintes caracteres: ponto (.), dois-pontos (:), aspas simples ('), aspas duplas (“), arroba (@), parênteses (), acento circunflexo (^), cerquilha (#), barra invertida (\), barra (/), espaço em branco ( ) e muito provavelmente outros símbolos. Vejamos alguns exemplos válidos: fulano123, alguem_silva, tes-te; vejamos também alguns exemplos não-válidos: fulano.silva, teste:, d'arc e fabrica/sa.
  • não é aconselhável utilizar os caracteres de símbolos: caracteres como cifrão ($), apesar de aceitos como nome de usuário não devem ser usados. Estes caracteres podem levar à falhas os scripts que utilizam estes caracteres frequentemente como parte da própria linguagem de programação.
  • não é aconselhável usar mais de 8 caracteres: apesar do sistema suportar, é interessante manter nomes de usuários com menos de 8 caracteres no sentido de facilitar a listagem de diretórios. Assim, se for utilizado nomes com mais de 8 caracteres, ao listar um diretório, os nomes de usuário “fernando” e “fernandocabral” serão truncados para 8 caracteres e não serão diferenciados.
  • o nome de usuário é sensível à caixa (case sensitive): isto implica dizer que é feita a diferenciação entre minúsculas e maiúsculas, ou seja, contas como luiz, Luiz, LuIz?são diferentes. Procure utilizar o padrão de somente minúsculas ou somente maiúsculas, evitando, assim, que haja confusão entre nomes de contas que possuem apenas a diferenças de maiúsculas e minúsculas.
  • é aconselhável utilizar somente caracteres alfanuméricos: para evitar problemas com os caracteres acima citados, é preferível que mantenha-se um padrão de não utilização desses caracteres especiais.

Login modo gráfico e modo texto[editar | editar código-fonte]

A entrada no sistema pode ocorrer de duas formas diferentes: pelo modo texto ou pelo modo gráfico.

No modo texto o processo de login do usuário "jose"(um usuário qualquer do sistema) é semelhante a seguinte:

Login: jose
Password:
Last login: Thu Apr 17 23:45:17 on tty2 
[jose@lab20 /home/jose]#

Em Login deve ser passado o nome do usuário, que irá efetuar a entrada no sistema, nesse caso, o usuário jose. Após o usuário entrar com o nome será ativada a opção de Password. Ela serve para informar a senha do usuário ao sistema, devendo o mesmo saber o que está digitando, porque não é mostrada a quantidade de caracteres da senha no visor, por medida de segurança.

As informações necessárias para acessar no sistema são passadas por um Interpretador de comandos. Um caractere “_” piscante na tela irá indicar que o interpretador de comandos (ou “prompt”) está pronto para receber e processar os comandos do usuário.

No modo gráfico a entrada é parecida com a do modo texto, pois solicita as mesmas informações, podendo ocorrer somente mudanças na aparência, isso porque existem vários tipos de diálogos de login gráfico, como o gdm (parte do ambiente de desktop Gnome) e o kdm (parte do ambiente de desktop KDE).

Nota: Na computação usamos o termo Interface Gráfica ou Interface Gráfica do Usuário (comumente chamada de GUI, que em inglês significa Graphical User Interface) para designar ícones, animações e outros elementos gráficos que servem de ponte na comunicação do homem com a máquina, em contraste com a interface do tipo texto a qual veremos adiante.

O ambiente gráfico nada mais é do que um software feito para facilitar o uso do computador, tornando possível realizar diversas operações apertando apenas um botão. O GNU/Linux, diferente dos sistemas Windows, possui dezenas de tipos diferentes de interface gráfica. Dentre eles, dois dos mais populares são os ambientes de desktop Gnome e KDE.

A entrada no modo gráfico pode ser feita de duas maneiras diferentes: automaticamente executada pelo sistema ou explicitamente solicitada pelo usuário. Para o segundo caso, basta o usuário digitar o comando “startx” para iniciar sua interface gráfica padrão. Alguns outros comandos existem, como por exemplo “kde”, que ativa o modo gráfico e executa o ambiente de desktop KDE.

Uma vez em modo gráfico, a utilização de uma shell (interpretador de comandos) e de programas modo texto é possível através de emuladores de terminais. Vários emuladores de terminais estão disponíveis. O xterm, por exemplo, é parte do próprio sistema gráfico, e existe virtualmente em todos os sistemas GNU/Linux, independente da presença de ambientes de desktop. O gnome-terminal é o equivalente ao xterm do Gnome, sendo o konsole o emulador de terminal do KDE.

Para iniciar um emulador de terminal, a partir dos ambientes de desktop Gnome ou KDE, pressione as teclas Ctrl+F2, e digite o comando relacionado ao emulador de terminal que você deseja (xterm, gnome-terminal ou konsole).

Para fechar sua sessão gráfica, de maneira “forçada”, pode-se utilizar a combinação de teclas Ctrl+Alt+Backspace, sendo esta a maneira mais recomendada de utilizar os recursos do ambiente de desktop. Com o Gnome ou KDE, a combinação de teclas Ctrl+Alt+Del, apresenta uma tela de confirmação de saída. O mesmo pode ser alcançado através do menu principal desses ambientes de desktop, acessível através das teclas Ctrl+Alt+F1.

O modo gráfico é o padrão das instalações para Desktop, enquanto o modo texto é o padrão para instalações de servidores. Uma vez no ambiente gráfico, o retorno ao modo texto (sem o fechamento da sessão no ambiente gráfico) pode ser feito através dos atalhos Ctrl+Alt+F1 para o primeiro console, Ctrl+Alt+F2 para o segundo console, etc. Por padrão estão disponíveis seis consoles modo texto. Para acessar o último então, usaríamos a combinação de teclas Ctrl+Alt+F6.

O ambiente gráfico está disponível no próximo “console”, ou seja, através do atalho Ctrl+Alt+F7.

Usuário e super-usuário[editar | editar código-fonte]

Uma característica importante do sistema Linux é que ele é multi-usuário. O GNU/Linux não foge a essa regra, permitindo que múltiplos usuários, através de suas respectivas contas, façam uso do sistema. A utilização de diferentes contas de usuário também é extremamente positiva do ponto de vista de segurança.

Usuários comuns possuem várias restrições quanto a ações que possam ter influências no sistema como um todo, restando ao administrador do sistema, ou superusuário, os privilégios necessários para a realização dessas tarefas. Esse mesmo conceito é utilizado para limitar o poder de alguns serviços do sistema, diminuindo os danos que possíveis falhas nesses serviços podem causar.

Durante a instalação do sistema, você escolhe uma senha para o superusuário, que servirá para efetuar login no sistema. No Linux temos um usuário administrador padrão (superusuário) que é chamado de "root". Diferente, por exemplo, do que acontece no Windows sistema no qual o administrador é usuário criado no momento da instalação. A senha deverá ser bem guardada e o mais restrita possível, pois a mesma é bastante cobiçada por pessoas que agem de má fé.

Em um exemplo simples serão apresentados dois comandos que serão vistos com maior detalhes no próximo capítulo. Estes comandos são adduser e passwd, que servem para inserir uma conta de usuário no sistema e atribuir uma senha à mesma. Assim para o nosso exemplo será adicionado o usuário maria no sistema.

# adduser maria
# passwd maria
 Changing password for user fulano
 New password:
 Retype new password:

Para testar se o usuário "maria" foi inserido corretamente no sistema, basta efetuar logoff (use o comando * exit * que será melhor explicado posteriormente) com o superusuário e efetuar logon com "maria". Após efetuar logon com o novo usuário são perceptíveis pequenas diferenças entre o superusuário e o usuário "maria", como o primeiro nome, que passou de root (superusuário) para maria, e foi alterado o caractere “#” por um caractere “$”.

Usuário root no Debian.

Terminal linux com usuário root (sudo)

Logout[editar | editar código-fonte]

Assim como se efetua login para “entrar” em um sistema, é também necessário efetuar logout para “sair” do sistema. Para fechar uma sessão de login poderá ser utilizado um dos seguintes comandos:

exit

ou

logout

O comando exit pode ser utilizado tanto para sessões em logins em modo texto quanto em terminais modo gráfico. No entanto, o comando logout pode ser utilizado somente para fechar sessões em modo texto. Também é interessante conhecer a tecla de atalho:

Ctrl+D

Essa combinação de teclas invoca o comando exit.

OBS: Ctrl+D só funciona se o usuário não digitou nada na linha ainda.

Porém em algumas distribuições este atalho é desabilitado (Slackware, por exemplo).

Console[editar | editar código-fonte]

O console (ou terminal) é um ponto de interação com o sistema, seja fornecendo ou obtendo informações. Para que um usuário faça uso do sistema, ele deve efetuar logon em um console, abrindo uma sessão.

Nos primórdios da computação, quando não existiam computadores pessoais, nem redes locais, toda interação com o sistema central, também chamado de mainframe, era realizada através de terminais ligados por cabos seriais. Os terminais não tinham poder de processamento - por isso eram também chamados de terminais burros - e tinham uma tela e um teclado para receber e enviar informações em modo caractere. Essa arquitetura é utilizada até hoje, principalmente quando necessita-se de terminais com baixo poder de processamento e pouca velocidade de acesso ao sistema central.

Hoje, além da arquitetura terminais/mainframe, também é muito utilizada a arquitetura cliente/servidor, na qual o cliente poderá processar as informações, podendo até gerar uma apresentação mais complexa (modo gráfico, por exemplo), comunicando-se com o servidor por meio de protocolos mais complexos, através de redes pequenas ou até grandes redes como a Internet.

O Linux se inspirou e abarcou as duas arquiteturas, uma vez que elas permitem a comunicação serial, suportando terminais em modo caractere e também comunicação cliente/servidor e clientes com ou sem poder gráfico. Uma forma particular de interação cliente/servidor, mas em modo caractere é através da aplicação telnet.

Como já foi dito, o GNU/Linux é considerado um sistema multiusuário, porque permite servir vários usuários simultaneamente. Podemos ter, por exemplo, vários usuários logados no sistema remotamente, através de sessões telnet, através de terminais em portas serias além de um usuário logado localmente, cada um rodando uma instância independente de um aplicativo diferente.

Nota: o sistema Windows somente adquiriu a característica de multiusuário, a partir do produto Windows 2000 Server, através do serviço denominado “Terminal Server”, que permitem aos terminais abrirem sessões independentes e rodar aplicações gráficas diversas. O Terminal Server já era possível de ser instalado na versão anterior, denominada Windows NT Server, porém não fazia parte dos pacotes de softwares oficiais.

Tipos de Console[editar | editar código-fonte]

Os consoles podem ser classificadas em:

Console local

Console que interliga as informações provenientes de um teclado e vídeo diretamente ligados ao sistema.

Console seriais

Esse tipo de console baseia-se em uma conexão estabelecida através de uma porta serial. O console resultante dessa conexão é exatamente igual a um local, sendo possível controlar o computador e até mesmo acompanhar sua inicialização.

Console remoto

Esse tipo de console baseia-se em uma conexão através de protocolos de rede. Aqui o cliente (usuário do console remoto) também tem controle sobre o servidor (máquina remota), de maneira idêntica a um console local. Um exemplo típico de console remoto é o protocolo telnet. O crescimento do uso desse tipo de console, principalmente via internet, levou à criação de protocolos mais seguros, como o ssh.

Console texto

Entrada única de informação com a utilização de um interpretador de comandos. A configuração normalmente se apresenta em fundo preto e letras brancas, podendo ser modificada. Considerada entrada única de informação por apresentar somente um local de entrada para os dados do usuário, trabalhando por modo caractere, os consoles texto suportam que o usuário manipule tanto o teclado quanto o mouse para as suas atividades, sendo seu uso restrito a alguns pontos do sistema, não surtindo efeito sobre console texto/gráfico.

Console texto/gráfico

Esse tipo de console trabalha dentro do console texto e permite uma área de trabalho mais amigável. A maioria das ferramentas de configuração do sistema vem nesse formato, o que possibilita um melhor auxilio ao administrador do sistema.

Console virtual

O sistema permite que sejam abertos vários consoles virtuais (característica de multi-usuário), exigindo assim um controle desses consoles e também de quem os estão manipulando. Esse controle pode ser feito por meio das teclas F1... até ... F12 (botões presentes na parte superior da maioria dos teclados). Cada um irá registrar o seu tipo - para saber o tipo veja o tópico sobre inicialização, Desligamento e Níveis de Execução -, texto ou gráfico.

Por padrão, a maioria das distribuições GNU/Linux configura os ambientes texto e gráfico da seguinte maneira:

       CONSOLE

F1 ... F6 | F7 ... F12
  TEXTO      GRÁFICO

A troca de um console texto para outro, ou para um console gráfico se dá com o comando Alt+Fx, sendo x o valor do console que se deseja trabalhar. E para a troca de ambiente gráfico para outro ou para o ambiente texto é Ctrl+Alt+Fx, sendo x o valor do console que se deseja trabalhar.

Por padrão, quando a inicialização é feita em modo gráfico, apenas uma instância do ambiente gráfico é iniciada. Isso significa que, por padrão, apenas um usuário pode estar logado localmente em modo gráfico. Para saber como abrir mais de um console gráfico, veja o capítulo referente a X-Window.

Pseudo console ou pseudo terminal[editar | editar código-fonte]

Um pseudo console é um console com características do modo texto dentro do modo gráfico. Para abrir um pseudo console, basta mandar executar um emulador de terminal (xterm, gnome-terminal, konsole, etc...) dentro do modo gráfico.

Comandos de reinicialização e parada[editar | editar código-fonte]

O ato de desligar o computador é muito comum pelos usuários de computadores pessoais, mas ele deve ser realizado corretamente para não causar danos, principalmente nos arquivos e dados que estão sendo manipulados no ato do desligamento.

Alguns dispositivos, principalmente os que possuem partes mecânicas, beneficiam-se do processo de desligamento correto, aumentando a vida útil dos próprios. Os recursos de gerenciamento de energia, APM e ACPI, presentes na maioria dos computadores modernos também contribuem para um desligamento mais “suave” do sistema.

A fim de manter o sistema em melhor estado por mais tempo, serão apresentadas as formas corretas de proceder com a reinicialização e parada do sistema.

Quando o computador está ligado, normalmente um sistema operacional está por trás fazendo o trabalho de gerenciamento dos dispositivos, que certamente estão trabalhando com a comunicação interna do sistema, e se provocarmos a parada repentina desses componentes podemos provocar perda ou mau funcionamento, tanto do sistema operacional quanto do equipamento.

Assim, para impedir este tipo de situação desagradável serão apresentados as formas corretas de parar o sistema:

reboot[editar | editar código-fonte]

O reboot serve para fazer a reinicialização de todo o sistema. Esse processo primeiramente para alguns serviços mais pesados, avisa a todo o sistema que este será desligado, interrompe alguns dispositivos, avisa ao sistema que ele deverá ser reativado após o desligamento total da máquina e finalmente para com todos os serviços, realizando o desligamento e reativando o sistema.

O GNU/Linux implementa funções de reinicialização a nível de serviços, o que reduz a necessidade de reinicialização a pouquíssimas situações, por exemplo, se a placa de rede for reconfigurada, apenas será necessário reiniciar os serviços pertinentes à rede - detalhes sobre serviços e estados deles serão vistos em outro capítulo - e não todo o sistema.

Atualizações de programas, por exemplo, são feitas com o próprio programa em funcionamento. Apenas a atualização do kernel requer a reinicialização do sistema.

Arquivo de chamada: /sbin/reboot

Sintaxe:

reboot

Outra forma de reiniciar o sistema é utilizar a combinação das teclas ctrl+alt+del. Esse comando pode ser desativado, para isso veja o capítulo referente a níveis de execução.

halt[editar | editar código-fonte]

O comando halt serve para paralisar todo o sistema, fazendo com que ele seja desligado corretamente e evitando futuro transtorno para o usuário. O halt funcionará imediatamente após a sua chamada.

Arquivo de chamada: /sbin/halt

Sintaxe:

halt

Nota: Outro comando com a mesma funcionalidade do halt é o poweroff.

shutdown[editar | editar código-fonte]

O comando shutdown possui muitas funcionalidades sendo utilizado tanto para parada e reinicialização quanto para a administração do sistema. Com ele é possível reiniciar, parar ou apenas avisar os usuários logados no sistema sobre o desligamento do sistema.

Arquivo de chamada: /sbin/shutdown

Sintaxe:

shutdown [opções] [t secs] tempo [mensagem] 

opções:

c - cancela um shutdown que está rodando ou está programado

h - desliga o computador (abreviação de halt)

k - apenas transmite aos usuários a mensagem e desabilita o login, mas não efetua o desligamento.

r - reinicia o computador (abreviação de reboot)

Essas são as principais opções para o shutdown, para maiores detalhes leia a página de manual sobre o assunto - man shutdown.

t secs - É o tempo, em segundos, que será dado entre o aviso de desligamento e o real momento de desligar.

tempo: É o tempo desejado até o momento de desligar o computador, o tempo é dado em minutos.

mensagem: Mensagem que será enviada junto com o aviso de desligamento do computador.

Exemplo:

#shutdown -h 30 vou desligar este pc
Broadcast message from root (pts/2) Fri Jan 18 14:11:31 2002...
vou desligar este pc
The system is going DOWN to maintenance in 30 minutes !!

No exemplo temos que o computador será desligado dentro de 30 minutos, e também as mensagens do usuário e do sistema operacional.

Exercícios de Revisão[editar | editar código-fonte]

1. Qual a diferença entre os comandos reboot, halt e shutdown?

2. O que é o root nos sistemas GNU/Linux?

3. O que é o console? Como trabalhar com vários consoles em um mesmo computador?