Como em qualquer sistema operacional, usar o GNU/Linux também pode ser muito inseguro e destrutivo se feito sempre através do usuário root, ou de qualquer outra conta com poderes de administrador do sistema. Mas por outro lado, pode ser muito tedioso ter que entrar com senhas a toda instalação ou configuração no sistema.

Algumas distribuições, como Ubuntu e derivados, utilizam muito o sudo para executar comandos com superusuário e nem mesmo permitem o login como root, por padrão. Isto com certeza é uma boa estratégia de segurança, mas há situações em que é bem mais produtivo acessar a conta do root, através do comando su.

Introdução

O comando su não é muito diferente do sudo, permitido executar comandos através da linha:

$ su -c 'comando a ser executado'

além de permitir acessar diretamente a conta do root ou qualquer outro usuário como segue a linha de comando abaixo:

$ su [-] [username]

O hífen, executa um login completo na conta do usuário, executando os arquivos .bashrc, .bash_profile, .bash_login, …, da conta e muda para o seu diretório padrão, como definido em /etc/passwd. Se o nome do usuário, username, for omitido, a conta a ser acessada será a do root.

Mas antes de acessar uma conta, ou executar um comando pela conta de um usuário, o comando su verifica o arquivo de regras /etc/suauth, para as restrições e permissões às contas.

A seção a seguir explica como configurar as regras no arquivo /etc/suauth, para dar acesso a uma conta ou conjunto de contas. Boa parte deste texto é uma tradução do conteúdo do manual do suauth.

Sintaxe do /etc/suauth

O arquivo /etc/suauth é consultado toda vez em que se executa o comando su. As declarações encontradas aqui, podem mudar a ação do comando su, com respeito a:

  • o usuário destino;
  • o usuário (ou grupo) executando o comando su.

O sintaxe das linhas em /etc/suauth seguem o formato apresentado abaixo:

id_destino:id_origem:AÇÃO

onde id_destino define o usuário destino. Seu valor pode ser:

  • uma lista de usuários separadas com vírgula;
  • ALL para todos os usuários;
  • ALL EXCEPT, seguido de uma lista de usuários, separados por vírgula.

O id_origem, que define o usuário origem, possui a mesma forma do id_destino, mas ele ainda suporta a palavra GROUP. Um GROUP deve ser seguido por um grupo, ou uma lista de grupos separadas por vírgula. Um ALL EXCEPT GROUP, seguido de um grupo, ou uma lista de grupos separadas por vírgula, também é válido. É aceitável o uso de grupos primários, com definidos em /etc/group.

AÇÃO pode ser uma das ações suportadas, listadas abaixo:

DENY – proíbe o acesso a ID id_destino, antes mesmo do password ser solicitado;

NOPASS – dá acesso automático a ID id_destino, sem solicitar password;

OWNPASS – dá acesso a ID id_destino, com autenticação com o password do usuário solicitante.

Alguns exemplos

Espaços em banco entre as vírgulas ou o dois pontos não são aceitos neste arquivo. Este arquivo é examinado sequencialmente, sendo aplicado sempre a primeira regra encontrada. Por exemplo, se usar a sequencia abaixo:

root:ALL EXCEPT GROUP wheel:DENY
root:terry:NOPASS

Se o usuário terry não estiver no grupo wheel, seu acesso a conta do root pelo comando su será bloqueada na primeira linha, onde define que todos os grupos estão proibidos de acessarem a conta do root, exceto os usuários do grupo wheel.

A segunda linha, no exemplo acima, define que o usuário terry acessa a conta do root sem a necessidade de uma senha. Para as regras acima funcionarem, é imprescindível que o usuário terry esteja no grupo wheel.

Veja outros exemplos a seguir:

root:chris,birddog:OWNPASS

Esta linha define que os usuários chris e birddog podem acessar a conta root pelo comando su, autenticando com a suas próprias senhas.

god,masterofuniverse:ALL:DENY

Esta linha declara que todos os usuários estão proibidos de acessarem as contas dos usuários god e masterofuniverse.

physics,chemical:ALL EXCEPT hickmann,binladen,chavez,morales:OWNPASS

Esta linha declara que todos os usuários tem acesso aos usuários physics e chemical, com o seu próprio password, exceto os usuários hickmann, binladen, chavez e morales.

ALL:ALL GROUP god:NOPASS

Esta linha define que todos os usuários do grupo god, podem acessar qualquer conta, sem password.

Algumas declarações neste arquivo podem criar sérias falhas de segurança no sistema, principalmente quando dão acesso a área do root, ou a outros usuários com maiores privilégios no sistema.

Bibliografia

Este texto é baseado no conteúdo do manual do suauth, sendo praticamente uma tradução de seu conteúdo, com a adição de alguns comentários quando se achar necessário.