Arquivo /etc/inittab

No post anterior, falei sobre os níveis de inicialização do Linux; aqui, vou falar sobre o arquivo /etc/inittab, que é o responsável por definir o nível de execução (runlevel) que o Linux vai iniciar e a sequência de scripts que serão executados para inicializar os serviços.

Primeira coisa, mesmo que a gente não venha trocar uma linha… vamos fazer um backup do arquivo; afinal de contas, ‘abençoados sejam os pessimistas, pois eles fizeram bekapi’:

# cd /etc/

# cp inittab /root/bekapi/

`inittab’ -> `/root/bekapi/inittab’


Agora sim, podemos editar o arquivo:

# vi inittab

A primeira linha importante é essa:

id:2:initdefault:

Essa linha, pessoas indica qual o runlevel padrão o sistema vai iniciar! Então, se quero trocar o nível, é aqui que vou mexer! Só por favor não incluam ai o nível 0 ou 6… rs senão o sistema vai ligar e desligar eternamente!

si::sysinit:/etc/init.d/rcS

A linha acima, chama o script que irá iniciar todos scripts que iniciam em ‘S’ no /etc/rcS.d.

~~:S:wait:/sbin/sulogin

Essa linha, chama o comando sulogin, que é utilizado pelo sistema para entrar em modo monousuário (single). Quando o sulogin é invocado, o seguinte prompt é exibido:

Give root password for maintenance

(or type Control-D to continue):

Essa mensagem costuma aparecer quando o sistema está iniciando e acontece algum problema… daí, você tem a opção de fornecer a senha de root prá consertar o sistema, ou então, teclar CTRL+D para continuar.

l0:0:wait:/etc/init.d/rc 0

l1:1:wait:/etc/init.d/rc 1

l2:2:wait:/etc/init.d/rc 2

l3:3:wait:/etc/init.d/rc 3

l4:4:wait:/etc/init.d/rc 4

l5:5:wait:/etc/init.d/rc 5

l6:6:wait:/etc/init.d/rc 6

As linhas acima indicam os níveis de inicialização que vimos anteriormente! E aqui, indica o nível e os diretórios que serão acessados (aqueles rc?.d, lembram?).

ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

Essa linha executa uma ação para a combinação das teclas CTRL+ALT+DEL.

Os números 12345 indicam que a ação será executada nesses níves. Por padrão, essa combinação executa o reboot da máquina (/sbin/shutdown -t1 -a -r now).

Então, se a gente for pensar em segurança, pode apagar essa linha, comentar (colocar o sinal ‘#’ sem as aspas na frente da linha), ou ainda executar um comando… Aqui na minha máquina, troquei a linha para:

ca:12345:ctrlaltdel:/bin/echo “Voce teclou CTRL + ALT + DEL”

Daí, toda vez que eu uso a combinação CTRL+ALT+DEL, aparece: “Voce teclou CTRL+ALT+DEL”. Chique no úrtimo, esse tal de comando echo :P!

1:2345:respawn:/sbin/getty 38400 tty1

2:23:respawn:/sbin/getty 38400 tty2

3:23:respawn:/sbin/getty 38400 tty3

4:23:respawn:/sbin/getty 38400 tty4

5:23:respawn:/sbin/getty 38400 tty5

6:23:respawn:/sbin/getty 38400 tty6

As linhas acima indicam chamadas do console para login em modo texto… são os terminais que acessamos com as teclas CTRL+ALT+F1, CTRL+ALT+F2…

E assim vai até o 6. As linhas acima, indicam que esses terminais estão liberados para uso! Ou seja, é logar e usar o shell!

Para desabilitar, basta comentar as linhas que deseja desabilitar; lembrando que não se deve comentar todas… pelo menos dois terminais devem ficar ativos… que aí, um você usa no modo texto, e outro é usado pela interface gráfica, caso esteja configurada.

Bem, depois de fazer todas mudanças no arquivo, é hora de salvar o arquivo e atualizar as configurações. Para isso:

# init q

A opção ‘q‘ diz ao init para reler o inittab! Assim, as mudanças são feitas sem a necessidade de reiniciar a máquina, uma vez que o inittab é lido no momento da inicialização.

É importante falar que o comando init não é utilizado somente para atualizar o arquivo… ele também pode ser utilizado para mudar o nível. Por exemplo:

# init 1

Esse comando desloga do terminal e invoca o sulogin, onde você pode informar a senha – ai entra no modo monousário; ou então tecla CTRL+D para iniciar no runlevel padrão.

Bem, é isso aí pessoal… até o próximo post!

Anúncios

Arquivos de inicialização do Linux

omentei no post de Dispositivos de Bloco, sobre o comando dmesg, que é responsável por guardar as mensagens de inicialização do Linux.

Neste post, quero falar um pouco sobre o processo de inicialização do Linux, mais especificadamente sobre os arquivos que são lidos quando a máquina é ligada.

Vejam o desenho abaixo:

Processo de Inicialização

Nesse desenho, temos o GRUB (GRand Unified Bootloader), que é o boot loader, ou melhor, é o gerenciador de boot, onde você pode escolher qual sistema irá iniciar.

Imagine que você tenha dois Sistemas Operacionais instalados na máquina; o GRUB irá listar os sistemas instalados e você decide qual sistema irá iniciar.

Após escolher o sistema, o kernel é descompactado e em seguida, é exibida na tela uma série de mensagens enviadas pelo kernel. Essas mensagens indicam a quantidade de memória existente na máquina, detecção e configuração do hardware entre outras. Após concluir a configuração do hardware, o kernel monta o root filesystem (também conhecido como diretório / – lembra dele?) e carrega o getty.

O getty, nada mais é do que um terminal console que exibe o programa login que espera a autenticação de usuário tanto em modo texto, como em modo gráfico. Se a autenticação for realizada com sucesso, o usuário recebe um shell para começar a executar suas tarefas.

O shell, é a interface entre o usuário e o kernel, a camada responsável por executar as ações solicitadas pelos usuários.

O que falei acima, é uma ilustração macro de como funciona a inicialização do Linux; agora, vou comentar sobre alguns arquivos que são lidos durante a inicialização do mesmo.

/etc/issue – neste arquivo, está armazenado a mensagem de boas vindas ao sistema, ou outras informações que você pode editar para que os usuários vejam antes do login no modo texto.

O issue é um arquivo texto; podemos visualizá-lo com o comando cat:

# cat /etc/issue
Debian GNU/Linux 4.0 \n \l

Vejam que esse arquivo, por padrão traz o nome e a versão do Linux instalado, além do nome da máquina e o terminal que irei logar. Bem, você deve estar seperguntando: “Onde foi que a Nix viu o nome da máquina e o terminal?”

E eu digo que, apesar de ser um arquivo texto, o issue aceita variáveis tais como nome da máquina, arquitetura, e etc, que são interpretadas pelo getty.

Vejam que, ao executar o cat no arquivo, ele trouxe o nome do sistema e a versão; trouxe também os caracteres \n e \l, que são o nome da máquina e o terminal.
Abaixo, um exemplo da mensagem que o /etc/issue mostra antes do usuário autenticar (não reparem o desenho… descobri que não sei desenhar! 😦 )

arquivo issue
Eu comentei que o issue aceita variáveis; para saber quais variáveis o getty poderá interpretar dentro do arquivo, basta consultar o man:

# man getty

Bem, vamos editar agora o arquivo /etc/issue e modificar o conteúdo dele…. afinal de contas, como falei, o conteúdo do issue fica disponível para qualquer um que tenha acesso a máquina; então, por medida de segurança, o ideal é retirar a mensagem padrão que mostra o sistema utilizado, e colocar uma mensagem que não divulgue alguma coisa sobre a máquina.

Por exemplo, podemos pedir para o issue exibir a data e a hora.

Vamos editar o arquivo…. mas antes, vamos criar um diretório para guardarmos uma cópia dos arquivos que vamos mexer… afinal de contas, depois você pode querer o original novamente, daí, é só copiar o arquivo guardado!

Criando o diretório:

# mkdir /root/bekapi

Copiando o arquivo /etc/issue para o diretório de backup que criamos:

# cp /etc/issue /root/bekapi/

Editando o arquivo:

# vi /etc/issue

Vamos apagar o conteúdo do arquivo e colocar as variáveis de data (variável d) e hora (variável t), lembrando que, para inserir uma variável no issue, é preciso colocar a barra invertida (\) para que a letra deixe de ser uma letra e passe a ser uma variável. Veja no exemplo:

Tux diz que hoje e: \d e agora sao: \t

Aí, antes do login, no modo texto, irá aparecer a seguinte mensagem: Tux diz que hoje e: Thu Dec 4  2008 e agora sao: 16:50:37

E, para que o getty entenda que se trata de uma variável, não podemos esquecer de colocar a \ (barra invertida) antes!

Só para encerrar o arquivo issue, é interessante falar que esse arquivo tem um irmão com a mesma função que ele e ainda tem praticamente o mesmo nome! É o arquivo /etc/issue.net.

A diferença entre esses dois arquivos é que, o issue.net, é visto por quem faz um acesso remoto. Por exemplo, imagine que você acesse sua máquina via ssh; quem vai mostrar a mensagem antes do login, é o issue.net.

Bom, ainda não falei em nenhum post sobre o ssh… prá você não ficar boiando até eu falar sobre ssh, nada mais é do que um serviço que permite acessar uma máquina remotamente!

Assim como o issue, o issue.net também aceita as variáveis do getty, e, podemos deixar uma mensagem diferente para ser vista por quem tenta entrar na máquina por acesso remoto 😉 !

/etc/motd – Esse arquivo é quase igual o issue, mas sua grande diferença é que sua mensagem aparece apenas depois do login!

Isso quer dizer que, todos usuários que se conectam na máquina, após o login, irão ver a mensagem do motd.

E, diferente do issue, o motd é um arquivo de texto simples, que não aceita variáveis!

Ele é útil para deixar recados como: “Esse servidor estará fora do ar depois das 18h para manutenção” ou então “Todas as ações executadas nesse servidor estão sendo logadas“.

Mas também pode ser qualquer outra mensagem que você queira deixar!

Bem, hoje vamos ficar somente nesses arquivos, mas nos próximos posts pretendo falar sobre o /etc/inittab e o /etc/fstab que também são lidos na inicialização do sistema.

Até lá!