O que é “root” no Linux?

Um laptop Linux no estilo Ubuntu.
fatmawati achmad zaenuri / Shutterstock.com

O usuário root é a entidade mais poderosa do universo Linux com poderes ilimitados, para o bem ou para o mal. Criar um usuário? Entendi. Aniquilar um sistema de arquivos? Opa, também entendi.

A história da origem

O usuário root é o superusuário do Linux. Eles podem, literalmente, fazer qualquer coisa. Nada é restrito ou fora dos limites para root. Se eles são um super-herói ou um supervilão, depende do usuário humano que assume o manto do administrador do sistema. Erros cometidos pelo usuário root podem ser catastróficos, então a conta root deve ser usada exclusivamente para fins administrativos.

O conceito de usuário root foi herdado do Unix, que tinha um usuário root como seu superusuário administrativo. Mas de onde vem o nome “root” não se sabe ao certo. Algumas pessoas pensam que veio do sistema operacional Multics , que é anterior ao Unix.

Ken Thompson e Dennis Ritchie , dois dos mais importantes arquitetos e autores do Unix, trabalharam anteriormente no Multics. O Multics tinha um sistema de arquivos que começava em um ponto chamado diretório raiz ou “/”, e todos os outros diretórios e subdiretórios se ramificavam para baixo e para fora a partir da raiz como uma árvore invertida. É o mesmo tipo de estrutura de árvore adotada pelo Unix. Então, talvez o Unix tenha adotado o usuário root da Multics também?

A pesquisa na documentação técnica do  Multics  revela uma infinidade de referências a volumes lógicos raiz, volumes físicos raiz, cartões raiz e o diretório raiz. Mas não há menção de uma conta de usuário root ou um usuário chamado “root”.

Outra teoria é que nos primeiros dias do Unix, a pasta pessoal do superusuário era a raiz “/” do sistema de arquivos. O superusuário precisava de um nome. O termo “usuário root” foi usado no lugar de um nome oficial, mas o termo permaneceu e se tornou o nome oficial.

Recomendado:  Como personalizar (e colorir) seu prompt do Bash

Isso parece mais provável, mas ninguém parece ser capaz de dizer com certeza como o usuário root obteve esse nome.

O Comando sudo

Em qualquer sistema operacional, é uma prática recomendada reservar o superusuário apenas para fins administrativos e usar uma conta de usuário normal no restante do tempo. Na verdade, a maioria das distribuições Linux modernas não permitem que você efetue login como usuário root.

Claro, este é o Linux, então você pode configurá-lo para permitir que o usuário root efetue login. Mas quanto menos tempo você passar logado como root, melhor. Além de se proteger de desastres decorrentes de erros de digitação, se você não consegue fazer login como root, ninguém mais pode. Qualquer pessoa com acesso não autorizado ao seu sistema não será capaz de fazer o login como root, o que limita os danos que eles podem causar.

Mas se o login como rootestiver desabilitado, como você administra seu computador Linux? Bem, é para isso que sudoserve o comando. Não requer que o usuário root efetue login. Ele temporariamente concede rootpoderes a você. É como pegar o martelo Mjolnir de Thor e receber temporariamente os poderes de Thor. Mas você só pode pegar o martelo se for digno. Da mesma forma, não é qualquer pessoa que pode usar o sudocomando. O sudocomando apenas concede rootpoderes a você se você for considerado digno e adicionado à lista de sudoers.

Existe outro comando semelhante a sudochamado su. Com sudo, você autentica usando sua própria senha. Com su, você autentica usando a senha do usuário root. Isso é significativo de duas maneiras. Em primeiro lugar, significa que você precisa atribuir uma senha para o usuário root usar su. Por padrão, o usuário root não tem senha e isso ajuda na segurança. Se rootnão tiver uma senha, você não poderá fazer o login como root.

Em segundo lugar, se você definir uma senha de root, todos que usarão o sucomando precisam saber a senha. E compartilhar senhas é uma segurança proibida, e para a senha de root, ainda mais. Qualquer pessoa que conheça a senha de root pode contar a outra pessoa. Se você precisar alterar a senha de root, deverá comunicar a nova senha a todas as pessoas que precisam conhecê-la.

Recomendado:  O que significa o “i” no iPhone?

É muito mais seguro usar a lista de sudoers para restringir quem pode usar sudoe permitir que cada pessoa com privilégios use suas senhas individuais para autenticação.

Usando sudo

O arquivo “/ etc / shadow” contém o nome de usuário de cada conta em seu computador Linux, junto com outras informações, incluindo a senha criptografada de cada conta, quando a senha foi alterada pela última vez e quando a senha expirou. Como contém informações confidenciais, elas só podem ser lidas por root.

Se tentarmos usar o wccomando para ler as linhas, palavras e caracteres no arquivo shadow, nossa permissão será negada.

wc / etc / shadow

Se estivermos na lista de sudoers e usarmos o mesmo comando com sudono início da linha, será solicitada nossa senha e o comando será executado para nós. Se você for o único usuário em seu computador Linux, será adicionado automaticamente à lista de sudoers quando o sistema for instalado.

sudo wc / etc / shadow

Como estamos executando o comando como root, o wccomando é executado. Ninguém nega o root.

O sudocomando costumava significar “fazer superusuário”. Ele foi aprimorado para permitir que você execute um comando como qualquer usuário, por isso foi renomeado como “usuário substituto do”. O comando é realmente executado como se o outro usuário o tivesse executado. Se você não especificar um nome de usuário, o sudopadrão é usar root. Se você deseja usar um usuário diferente, use a -uopção (usuário).

Podemos ver que os comandos são executados como outro usuário usando o whoamicomando.

Quem sou eu
Sudo Whoami
sudo -u mary whoami

Executando como root sem usar su

O problema sudoé que você precisa usar “sudo” no início de cada comando. Se você está apenas digitando um ou dois comandos, isso não é grande coisa. Se você tem uma sequência mais longa de comandos para executar, pode se tornar cansativo. Pode ser cansativo, mas atua como uma trava de segurança útil para rootos poderes de, e você tem que tirar a segurança conscientemente a cada vez.

Recomendado:  10 maneiras de abrir o prompt de comando no Windows 10

Existe uma maneira de “logar” efetivamente, já root que não usa sue não exige que o usuário root tenha uma senha.

Aviso: tenha cuidado ao usar este método. Cada comando que você emitir será executado com alegria, sem perguntas – mesmo que seja destrutivo.

Usar sudopara executar um shell Bash abre um novo shell com rooto usuário.

sudo bash

Observe que o prompt de comando muda. O caractere final do prompt agora é um hash “#” em vez de um caractere de dólar “$”.

A forma como o corpo do prompt de comando é exibido varia de distribuição para distribuição. No Ubuntu, somos informados de que o usuário é roote mostrado o nome do computador e o diretório de trabalho atual. A cor do prompt também é alterada.

Como somos root, podemos executar comandos que normalmente exigiriam o uso de sudo.

wc / etc / shadow

Para sair do shell do usuário root, pressione “Ctrl + D” ou digite “exit” e pressione “Enter”.

saída

Menos Superman, Mais Clark Kent

Se você estiver na lista de sudoers, terá superpoderes sobre o sistema Linux. Lembre-se de que Superman passa mais tempo como seu alter ego de boas maneiras do que com sua capa vermelha.

Use sua conta de usuário regular tanto quanto possível. Só mude para rootquando você realmente precisar.