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