Posts com Tag ‘bash’

Pode acontecer que um administrador Linux perca a senha de root de sua máquina. Como recuperá-la?

Muito simples:

1- Executar um boot na máquina usando um live-CD

2- Através de um terminal, faça login como root.

Se estiver usando Ubuntu, por exemplo, use o comando “sudo su”.

3- Monte a partição raiz do sistema de arquivos que se deseja recuperar a senha de root, a partir deste boot do live-CD:

$ mount -t ext3 /dev/sda1 /mnt/diretorio

4- Obtenha o prompt do sistema instalado

# chroot /mnt/diretorio

Com isto, o sistema dará um prompt de comando dentro da partição que se deseja recuperar a senha.
OBS: utilize como live-CD a mesma distribuição do sistema operacional instalado na máquina. Se possível, até mesmo a mesma versão. É que o comando chroot depende de bibliotecas e desta forma evita-se erros do tipo:

chroot: cannot run command “/bin/bash”: Exec format error

5- Troque a senha de root através do comando “passwd”

# passwd

6- Reinicie a máquina normalmente pelo HD.

Quando um usuário regular (sem privilégios de root) digita comandos, alguns deles não são executados pelo sistema retornando a mensagem de erro “command not found”. Um exemplo disto no Debian é quanto ao comando “$ifconfig”, que retorna a mensagem de erro:

bash: ifconfig: command not found

Isto é normalmente devido ao fato que a localização do comando não está no PATH (caminho) do usuário regular. Verifiquemos este fato:
1) Através do comando “$ locate ifconfig”, devemos obter a resposta “/sbin/ifconfig”. Ou seja, o comando está na pasta /sbin.
2) Certifique-se qual o seu caminho através do comando “$ echo $PATH”, onde possivelmente devemos obter a resposta “/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/games”. Ou seja, realmente o caminho /sbin não está presente.

Ou seja, a mensagem de erro “bash: ifconfig: command not found” é devido ao fato que ifconfig está localizada na pasta /sbin, e esta não é colocado automaticamente no PATH de usuários regulares. Apenas no PATH do root.

Entretanto, qualquer usuário pode executar o comando ifconfig como um usuário regular se for acrescentado o caminho absoluto:

$ /sbin/ifconfig

Neste caso, o comando será executado normalmente informando as características das interfaces de rede existentes no sistema. Porém apenas para mostrar as configurações das interfaces ethernet, não sendo possível ao usuário regular modificá-las (para tal deve-se ter obrigatoriamente privilégios de root).

Acrescente, de forma permanente, o caminho /sbin para os usuários regulares:
1) edite com privilégios de root o arquivo /etc/profile
2) na linha PATH referente a usuários regulares, acrescente o caminho /sbin
3) para recarregar o arquivo /etc/profile sem ter que reiniciar a máquina, utilize o comando “source” a partir da área do usuário regular da seguinte forma:

$ source /etc/profile

Pronto, agora o usuário já poderá executar o comando “$ ifconfig” sem retornar erro.

Observações adicionais:
1- “PATH”: quando um usuário digita um comando, o shell procura em cada um dos diretórios especificados em PATH para tentar encontrá-lo. Se não encontrar o comando em qualquer um desses diretórios, o sistema retorna a mensagem “Command not found”.
2- “echo”: comando para exibir o conteúdo de uma variável ou de uma linha de texto entre aspas.
3- “source”: comando que executa o conteúdo de um arquivo. No exemplo deste post, no qual fizemos uma alteração no arquivo /etc/profile, o resultado é que o script dentro do arquivo profile será novamente executado no Shell corrente deixando neste, todo o novo ambiente criado. Isso torna desnecessário o usuário fazer logout/login no sistema para obter o novo ambiente.
4- arquivo “/etc/profile”: arquivo que é executado toda vez que um usuário faz login no sistema. Este arquivo atua para todos os usuários.
5- pasta “sbin”: pasta com os arquivos binários de comandos externos disponíveis para administrar o sistema. No Linux, os comandos podem ser internos ou externos. Os internos são aqueles que estão dentro de um shell interpretador de comandos. Quando o shell é carregado na memória, seus comandos ficam residentes nela. Exemplos: cd, logout e kill; comandos externos estão localizados em pastas específicas no HD, como /bin e /sbin. O Linux acessa o HD sempre que um desses comandos é solicitado. Exemplos: mkdir, ifconfig e ls.
6- “ifconfig”: comando que quando executado desta forma sem argumentos, mostra o “status” das interfaces atualmente ativas.