Pesquisa de site

Como mudar (su) para outra conta de usuário sem senha


Neste guia, mostraremos como mudar para outra conta de usuário ou para uma conta de usuário específica sem exigir uma senha. Por exemplo, temos uma conta de usuário chamada postgres (a conta padrão do sistema de superusuário PostgreSQL), queremos que cada usuário (normalmente nosso banco de dados PostgreSQL e administradores de sistema) no grupo chamado postgres para mudar para a conta postgres usando o comando su sem inserir uma senha.

Por padrão, apenas o usuário root pode mudar para outra conta de usuário sem inserir uma senha. Qualquer outro usuário será solicitado a inserir a senha da conta de usuário para a qual está mudando (ou se estiver usando o comando sudo, será solicitado a inserir sua senha). Se não fornecer a senha correta, ele obterá um erro “falha na autenticação”, conforme mostrado na captura de tela a seguir.

Você pode usar qualquer uma das duas soluções fornecidas abaixo para resolver o problema acima.

1. Usando o Módulo de Autenticação PAM

PAM (módulos de autenticação conectáveis) estão no centro da autenticação do usuário nos sistemas operacionais Linux modernos. Para permitir que usuários de um grupo específico mudem para outra conta de usuário sem senha, podemos modificar as configurações padrão do PAM para o comando su em /etc/pam.d/su arquivo.

vim /etc/pam.d/su
OR
sudo vim /etc/pam.d/su

Adicione as seguintes configurações após “auth amount pam_rootok.so ” conforme mostrado na captura de tela a seguir.

auth       [success=ignore default=1] pam_succeed_if.so user = postgres
auth       sufficient   pam_succeed_if.so use_uid user ingroup postgres

Na configuração acima, a primeira linha verifica se o usuário alvo é postgres, se for, o serviço verifica o usuário atual, caso contrário, a linha default=1 é ignorada e as etapas normais de autenticação são executadas.

auth       [success=ignore default=1] pam_succeed_if.so user = postgres

A linha a seguir verifica se o usuário atual está no grupo postgres, se sim, o processo de autenticação é considerado bem-sucedido e retorna suficiente como resultado. Caso contrário, as etapas normais de autenticação serão executadas.

auth       sufficient   pam_succeed_if.so use_uid user ingroup postgres

Salve o arquivo e feche-o.

Em seguida, adicione o usuário (por exemplo aaronk) que você deseja su à conta postgres sem senha no grupo postgres usando o comando usermod.

$sudo usermod -aG postgres aaronk

Agora tente su para a conta postgres como o usuário aaronk, você não deverá ser solicitado a fornecer uma senha, conforme mostrado na captura de tela a seguir:

su - postgres

2. Usando arquivo Sudoers

Você também pode su para outro usuário sem exigir uma senha, fazendo algumas alterações no arquivo sudoers. Neste caso, o usuário (por exemplo aaronk) que mudará para outra conta de usuário (por exemplo postgres) deverá estar no arquivo sudoers ou no grupo sudo para ser capaz de invocar o comando sudo.

sudo visudo

Em seguida, adicione a seguinte configuração abaixo da linha “%sudo ALL=(ALL:ALL) ALL ” conforme mostrado na imagem a seguir.

aaronk ALL=NOPASSWD: /bin/su – postgres

Salve e feche o arquivo.

Agora tente su para a conta postgres como usuário aaronk, o shell não deverá solicitar que você insira uma senha:

sudo su - postgres

É tudo por agora! Para obter mais informações, consulte a página de entrada manual do PAM (man pam.conf) e também a do comando sudo (man sudo).

man pam.conf
man sudo