Hoje vamos ver como operam e quem são os comandos e usuários, com permissões máximas de sistemas baseados em UNIX, quando invocados como sudo!
| Se você apoia nosso site, desative o AdBlock quando visitá-lo, inclusive em Mobile!
Os anúncios são poucos e não invasivos. Se quiser contribuir com nosso trabalho, clique em qualquer banner de sua preferência, exceto dos Parceiros. Mais detalhes clicando aqui.
1. Introdução
Vocês podem até não conhecer em detalhes como o root funciona na prática num sistema tipo UNIX, como o CentOS ou o FreeBSD por exemplo. Mas deve ter ouvido falar de como é e o que faz o root em um celular Android. Curiosamente, é a mesma coisa!
O Android roda sob o kernel Linux e, por si só possui as mesmas definições do próprio sistema de escala de usuários, incluindo o root como administrador de tudo. Mas o Android infelizmente é semi-fechado: apesar de rodar sob kernel Linux, ele vem com o usuário Root naturalmente bloqueado.
Para quem não sabe, o root do Android te permite ter pleno controle do aparelho, removendo aplicativos nativos da fabricante permitindo até que você troque seu sistema por completo.
SuperSU é um popular aplicativo de gerenciamento de Root no Android
Desbloqueá-lo é algo que as fabricantes de celular não querem que qualquer um faça, por isso que fazer Root normalmente elimina a garantia do aparelho.
Curiosidade #1
Usuário root de sistemas Linux desktop conseguem fazer root facilmente em celulares Android, pois possui o pacote ADB – Android Debug Bridge – e o FastBoot, nativos nos repositórios; para tê-lo, basta instalar os pacotes conforme seu sistema:
$ sudo apt/dnf/yum install adb $ sudo apt/dnf/yum install fastboot
Não vou ater a detalhes, pois não é esse o objetivo do post e será tema de outros posts, mas com isso você tem as ferramentas necessárias e conseguirá rootear com mais facilidade quase qualquer Android.
2. sudoers
O Sudoers é o arquivo localizado em /etc que define as permissões dos usuários do sistema. É lá que estão as regras, que dizem quais as permissões que cada usuário possui. É sua cartilha de direitos do sistema!
Se determinado usuário tem ou não permissão para fazer algo, é editando o sudoers como Root que você poderá alterar esse tipo de informação.
3. sudo
O comando sudo significa substitute user do (fazer substituição do usuário) ou super user do (fazer como super usuário).
Esse comando verifica se você está listado no supracitado arquivo sudoers e dá ou não permissão como root na hora de executar um programa ou arquivo.
Exemplo:
GParted aberto como super-usuário.
Explicando:
- Gparted abre com permissões de Root, porque o usuário nathandrake estava listado em /etc/sudoers.
- Se não estivesse, você veria um erro como:
“O usuário nathandrake não possui permissões porque não está listado em sudoers. Este incidente será reportado” - Reportado, porque se você verificar os logs do sistema, verá que alguém tentou aceder como Root pelo usuário nathandrake; apenas uma medida de segurança extra nativa do sistema.
4. su
Significa Switch User, literalmente trocar usuário.
Quando você está fazendo algum trabalho num computador com muitos usuários registrados, com esse comando você facilmente troca de usuário.
Exemplo:
nathandrake@unixuniverse:~$ su urbancompass senha: urbancompass@unixuniverse: ~$
OBS:
Ambos comandos “su” e “su root” entram no usuário root.
nathandrake@unixuniverse:~$ su senha: root@unixuniverse:~$
nathandrake@unixuniverse:~$ su root senha: root@unixuniverse:~$
4.1 Você tambem pode combinar comandos com o sudo!
Se você fizer SUDO SU $USER, você, estando no arquivo sudoers (portanto, administrador) pode logar direto como outro usuário, escalando de forma segura os privilégios daquele, não perdendo tempo.
Exemplo:
nathandrake@unixuniverse:~$ sudo su urbancompass [sudo] senha para nathandrake: urbancompass@unixuniverse: ~$
Você também pode se tornar root com “sudo -i”:
nathandrake@unixuniverse:~$ sudo -i [sudo] senha para nathandrake: root@unixuniverse:~$
O arquivo /etc/sudoers, gerenciado pelo SUDO, também habilita permissões para que usuário X tenha ou não permissão para executar o programa Y.
Isso quer dizer que você pode limitar o acesso por exemplo até a games – usuário X não abrirá o game Y – ou programa normais – usuário X só usará o Firefox e não abrirá o Chrome.
A definição de privilégios é bem maleável no linux nesse aspecto. Tudo isso editando o arquivo /etc/sudoers como Root.
5. sux
O que é isso? Que ofensa gratuita é essa? – Poucos entenderão essa
Muitos não vão conhecer esse comando mas conhecem o substituto dele:
GKSUDO no Gnome ou KDESUDO no KDE (Kubuntu).
O SUX era o “Substitute User for X” e tinha o objetivo de abrir programas em interface de usuário com direitos de root. Acontece que, no momento em que você digita “sudo $USER” no terminal, o sistema cria variáveis de ambiente que se isolam das variáveis do servidor XOrg, causando alguns conflitos que são sanados pelo super-usuário com interface gráfica. Hoje, este comando foi substituido pelo GKSUDO e pelo KDESUDO:
$ gksudo gparted
$ kdesudo gparted
Com o lançamento do servidor Wayland, o gksudo caiu em desuso e não temos mais um gestor de root graficamente como antes. Os desenvolvedores alegam que o gksudo gerava hipotéticas falhas de segurança.
O XOrg continua com o suporte ao gksudo.
6. root
Usuário comum escalado com sudo, ou o usuário root, são usuários extremamente poderosos.
Mas por quê?
Fazendo uma comparação direta com o sistema da Microsoft, o Root é um usuário que basicamente está num nível acima do Administrador do Windows.
Porque sistemas baseados em UNIX são normalmente mais abertos e livres, dão mais liberdade aos usuários e sysadmins. O usuário root desses sistemas permite editar configurações do Kernel e, até mesmo, trocá-lo por outra versão; ou mesmo fazer algo ainda mais impensado, substituir o kernel Linux pelo kernel BSD, como ocorre com o projeto Ubuntu/BSD! Enquanto isso o usuário Administrador não tem poderes para configurar, por exemplo, módulos e outros códigos dentro do Kernel NT do Windows.
Com o Root você formata o computador com ele em pleno funcionamento, troca ou edita módulos do kernel, modifica o governador de CPU permitindo alterar seu clock em tempo real, faz a memória RAM ser usada como se fosse um armazenamento comum, adiciona memória SWAP na placa de vídeo, enfim, faz todo impensado tipo de anarquia no sistema que é impossível em outros sistemas fechados como o Windows. Então, cuidado ao usar comandos que peçam para ter privilégios de root ou de usuários via sudo.
Detalhe que essa observação é válida para os usuários de qualquer sistema baseado em UNIX: O root te dá liberdade de modificar o que quiser e é justamente aí que mora o perigo, de quebrar o sistema fazendo algum comando perigoso ou impensado. Mesmo usuários do macOS devem ter cuidado com o que fazem com ele.
7. toor
O sistema FreeBSD, que executa o kernel BSD, possui um usuário desconhecido do universo Linux: o TOOR!
O usuário toor vem por padrão na instalação do FreeBSD como uma conta alternativa ao root mas no mesmo nível pois possui UID 0. Seu principal objetivo é ser usado lado a lado com um shell fora do padrão do sistema, que seja instalado em um filesystem diferente do raiz. Resumindo, o root abre com o shell “bash”, enquanto que o toor vai abrir dentro do shell “sh”.
No caso de algum problema grave na partição raíz, ficaríamos sem shell,e conseqüentemente sem acesso ao sistema. O Root não funciona e o Terminal terá problemas em abrir! Contudo, ao entrar em modo single, o sistema nos pede o caminho completo de algum shell alternativo, e é aí que o Toor entra para salvar o dia, como uma alternativa ao shell definido como padrão, abrindo como Root sob um outro Shell permitindo a devida manutenção do sistema!
Claro, o toor é pouco ativo porque o BSD, alias, os sistemas baseados em UNIX num geral, possuem uma estrutura muito sólida e raramente esse tipo de problema ocorre, fazendo com que seu uso caisse em desuso. Mas se você utilizar o BSD verá o toor como opção nas configurações de instalação do sistema. Ter mais de 1 usuário super-poderoso é algo nativo dos tempos da época do UNIX® da AT&T e é aqui o ponto que quero abordar na curiosidade a seguir!
Curiosidade #2
Como informado recentemente neste post, o sistema AT&T UNIX System V original de 1989, possuía 3 usuários por padrão: O usuário Root, o usuário Install e o usuário Service. O Root era o administrador principal; O Install dava manutenção, instalava e removia programas no sistema; E o Service dava manutenção na raíz do sistema, exemplo, configurações de conectividade; mas não podia remover ou instalar programas novos e, ao lado do usuário Install, não podia adicionar ou remover usuários ao sistema, papel este exclusivo do Root.
8. Conclusão
Conhecer e dominar o uso dos usuários super-poderosos dos sistemas baseados em UNIX é de suma importância para a correta gestão do sistema. Lembrar suas inter-relações permite agilizar seu trabalho de manutenção e aperfeiçoar permissões no sistema, tornando-o mais seguro.
Lembre-se: Com grandes poderes, vem grandes responsabilidades!
Muita atenção quando utilizar o usuário root!
#UrbanCompassPony
Superman é uma marca registrada da DC Comics®, uma subsidiária da Time Warner®.
Spiderman é uma marca registrada da Marvel Comics®.
Autodidata, me aprofundei em sistemas operacionais baseados em UNIX®, principalmente Linux. Também procuro trazer assuntos correlacionados direta ou indiretamente, como automação, robótica e embarcados.
Aw, this was a really good post. Taking the time and actual effort to produce a really good article… but what can I say… I procrastinate a whole lot and don’t seem to get nearly anything done.