Nem sempre o Root tem super poderes!

Até mesmo o usuário Root pode ter seus super poderes limitados e não ter todas as permissões para manipular um sistema. Entenda alguns casos particularmente curiosos.

| 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.

Quem já logou como root, já deve ter visto essa frase:
– Com grandes poderes vem grandes responsabilidades.
Ela aparece em algumas distros como o Fedora e o Debian, logo que você faz login como root em qualquer terminal e é uma clara referência a outro herói da cultura pop: Spiderman.

Você já se perguntaram qual o limite do usuário Root?
Qual seria a criptonita do usuário mais poderoso do universo UNIX?

Exemplo 1

Estava mexendo com um banco de dados de uma empresa, pra quem conhece o Firebird eu tava usando os comandos gfix e gbak pra tirar uns erros de corrupção do banco de dados e percebi algumas coisas.

O comando gfix verifica a integridade do banco de dados e tenta recupera-lo dos possíveis erros encontrados.
Caso não recupere, é sinal de que está corrompido, para isso uma alternativa é usar o gbak, que simplesmente cria um backup reconstruindo o banco de dados (demora xD) e cria uma versão compactada do mesmo;
E ai voce roda o gbak pra restaurar o banco, pra ele ser utilizável novamente.
E é ai que entra o pulo do gato:

Nem é bem um simples pulo de gato mas vários gatos!

Primeiro entrando como root:

$ sudo -i

Comando:

# gbak -g -c -z -v test.fbk bancoempresa.fdb -user SYSDBA -pass senhahue

O resultado?

gbak:opened file teste.fbk
gbak:transportable backup — data in XDR format
gbak: backup file is compressed
gbak: ERROR:I/O error for file “teste.fbk”
gbak: ERROR: Error while trying to create file
gbak: ERROR: Permission denied
gbak: ERROR:failed to create database portfoliomgr.fdb
gbak:Exiting before completion due to errors

Observem que executei o comando estando com o usuário root logado e ainda tive a visão do erro “permissão negada”.

Ou seja, MESMO sendo o usuário root, ele não tem qualquer permissão de dar ordens ao Firebird nesse caso, que se recusa a trabalhar em diretórios que ele não tem propriedade.
A solução aqui, é curiosamente, mudar o usuario e o grupo da pasta do banco, para firebird:firebird.
Ai sim ele tem permissão pra restaurar criando o arquivo.

É interessante como uma permissão especifica muda tudo, porque com o comando “sudo nautilus” por exemplo, você tem acesso root ao explorador de arquivos do sistema, permitindo que você edite e apague qualquer coisa na pasta raiz, sem limites, inclusive podendo quebrar o sistema com isso.
Mas “sudo gbak…” não basta, nem mesmo “# gbak”, o Firebird do linux possui um sistema de permissões bem intrincado que impede alterações no banco de dados que não sejam pelo unico usuário autorizado, o usuário “firebird” do grupo “firebird”!

Exemplo 2

O usuário root pode trancar um arquivo por dentro, saindo pela porta dos fundos, impossibilitando de ser acessado mesmo que assim o deseje!

  • Buguei. Explica isso ai melhor.

Com os atributos especiais – já explicados neste post aqui do site! – você pode tirar a permissão de exclusão, edição ou visualização de um arquivo, mesmo que seja pelo usuário root. Como resultado, nem mesmo o root poderá excluído ou escrevê-lo de modo normal. Mas pode ser revertido, se você mudar o atributo do arquivo como usuário root – entrando pelos fundos e destrancando a porta principal por dentro – e ai sim, você terá permissões novamente!

Conclusão

Curioso não?
E isso tudo feito fora do SELinux. Isso num  simples Ubuntu MATE (ou qualquer outra distro).
O sistema de permissões do pinguim é bem intrincado e vai além do que imaginamos.
Por essas e tantas outras que um vírus no Linux se torna inviável e na maioria das vezes, sem ação destrutiva. As permissões o impedem que cause estragos maiores. – como já abordado neste outro post do site!

#UrbanCompassPony

Créditos
Capa do post: Batman v Superman: Dawn of Justice é um filme da DC Comics®, uma subsidiária da Time Warner® e distribuído pela Warner Bros. Pictures®. Todos os Direitos Reservados a seus respectivos produtores e distribuidores.

Deixe um comentário