Como permitir autenticação com 'sudo' usando uma senha alternativa?

3

Recebi uma senha longa da minha empresa para o meu sistema Ubuntu. Esta senha é complicada para entrar ao autenticar com sudo repetidamente.

Posso autenticar com sudo usando uma senha diferente da associada à minha conta de usuário ou ativar sudo sem autenticação de senha?

    
por Vineeth Chowdhary 30.09.2014 / 14:56

5 respostas

5

Você pode vincular a sudo authentication ao conhecimento de uma chave secreta gerenciada por ssh-agent . Isso pode ser feito através do PAM e do % módulopam_ssh_agent_auth . Você pode gerar um par de chaves separado para usar exclusivamente para a autenticação sudo . A senha será a senha usada para criptografar a chave privada.

Para configurar o módulo pam_ssh_agent_auth , adicione o seguinte a /etc/pam.d/sudo antes de qualquer outra diretiva auth ou include :

auth       sufficient pam_ssh_agent_auth.so file=/etc/security/authorized_keys

Você também precisará informar sudo para não eliminar a variável de ambiente SSH_AUTH_SOCK adicionando o seguinte a /etc/sudoers (via visudo ):

Defaults    env_keep += "SSH_AUTH_SOCK"

Agora, adicione a parte pública da chave que você deseja que atue como o token de autenticação para /etc/security/authorized_keys . Provavelmente, você também deseja adicionar a opção -t a ssh-add com tempo de vida curto adequado ao adicionar a chave para que ssh-agent imite o comportamento padrão sudo de solicitar confirmação de senha se um certo tempo tiver passado desde a última inserção ou até mesmo usar a opção -c para acionar a confirmação da senha cada vez que a chave é usada para autenticação.

Observe que o padrão no Ubuntu é usar Chaveiro do GNOME para o gerenciamento de chaves SSH, que, até onde eu sei, atualmente não permite que o tempo limite da chave seja definir . Você pode desativar completamente o gerenciamento de chaves SSH no Keyring do GNOME adicionando o seguinte a ~/.config/autostart/gnome-keyring-ssh.desktop :

[Desktop Entry]
Type=Application
Name=SSH Key Agent
Comment=GNOME Keyring: SSH Agent
Exec=/usr/bin/gnome-keyring-daemon --start --components=ssh
OnlyShowIn=GNOME;Unity;MATE;
X-GNOME-Autostart-Phase=Initialization
X-GNOME-AutoRestart=false
X-GNOME-Autostart-Notify=true
X-GNOME-Autostart-enabled=false
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=gnome-keyring
X-GNOME-Bugzilla-Component=general
X-GNOME-Bugzilla-Version=3.10.1
NoDisplay=true
X-Ubuntu-Gettext-Domain=gnome-keyring

que substitui /etc/xdg/autostart/gnome-keyring-ssh.desktop , a diferença chave é a linha:

X-GNOME-Autostart-enabled=false
    
por 30.09.2014 / 16:17
1

Se for possível habilitar a conta raiz no seu sistema Ubuntu, você pode configurar sudo para solicitar a senha raiz em vez da senha do usuário chamador, adicionando o seguinte a /etc/sudoers (usando visudo ):

Defaults rootpw

O Ubuntu, por padrão, desabilita a conta root por bloqueando sua senha . Para ativá-lo, basta definir uma nova senha para root :

$ sudo passwd root

Mesmo se você quiser habilitar a autenticação com a senha de root para sudo , você pode manter logins de root desabilitados em dispositivos de console locais esvaziando (ou comentando) tudo em /etc/securetty . Um arquivo / etc / securetty em branco, no entanto, não impede que o usuário root efetue login remotamente usando o OpenSSH ou outros meios que não são afetados por pam_securetty.so (por exemplo, su , sudo , ssh , scp , sftp ). O OpenSSH pode ser configurado especificamente para evitar logins de raiz através da sub-rotina PermitRootLogin no em /etc/ssh/sshd_config , mas se você decidir fazer isso você deve estar ciente de quaisquer outros efeitos que possam ser relevantes no seu caso.

    
por 30.09.2014 / 18:06
1

Por que você não relaxa apenas colocando a senha, alterando o comportamento do sudo, assim:

Isto foi retirado do ChromiumOS Dicas e Truques Page: Tornando o Sudo um pouco mais permissivo

cd /tmp
cat > ./sudo_editor <<EOF
#!/bin/sh
echo Defaults \!tty_tickets > \          # Entering your password in one shell affects all shells 
echo Defaults timestamp_timeout=180 >> \ # Time between re-requesting your password, in minutes
EOF
chmod +x ./sudo_editor 
sudo EDITOR=./sudo_editor visudo -f /etc/sudoers.d/relax_requirements

Se você não sabe o que foi feito, tty_tickets is now false , significa que você não precisa se autenticar em todos os tty. Timestamp_timeout is set to every 3 hours , o que significa que você insere a senha uma vez a cada três horas. Entre o horário em que você coloca e o limite de três horas, digitar sudo some command não resultará na solicitação da sua senha até que o limite expire.

relax_requirement agora pode ser usado para controlar o sudo. As opções disponíveis estão no Manual do Sudoer . Procure a seção em negrito SUDOERS OPTIONS . Há muitas opções além das que descrevi. Fazer isso desta maneira não requer modificações no PAM, etc., e funciona em qualquer sistema com ou sem o PAM.

    
por 30.09.2014 / 19:14
0

Você pode editar o arquivo /etc/sudoers com seu editor de escolha ou apenas executar visudo e adicionar a linha para permitir que seu usuário específico use o comando sudo sem senha. Algo como:

user ALL = NOPASSWD : ALL

    
por 30.09.2014 / 15:12
0

Mantenha um shell aberto, no qual você usou sudo -i , o modo interativo . Toda vez que você precisar fazer algo como root, faça dentro desta shell.

Você também pode executar novamente mais de uma vez os comandos necessários pesquisando-os por meio de [STRG] + R , f.e. atualização:

aptitude update && aptitude upgrade && aptitude dist-upgrade

Se for razoável ou prático para os seus propósitos, você pode usar um tty para isso. Então é fácil de encontrar, se você tem muitos programas rodando em * DM.

    
por 30.09.2014 / 16:27