Use uma senha para administração e outra para login do sistema

9

Como posso dar ao usuário uma senha para uso normal ao efetuar login, e outra senha para administração do sistema e sudo access ? Eu quero que um usuário tenha duas senhas.

    
por Varun Sridharan 19.02.2013 / 05:24

1 resposta

15

Existe uma maneira de fazer isso sobrescrevendo as configurações do PAM (Pluggable Authentication Module) para o serviço sudo. Faça isso com grande risco para a sua máquina - não apenas copie e cole a menos que você entenda o que o comando faz, e sempre mantenha um terminal raiz aberto - teste de teste! - antes de fazer o logout, caso precise voltar e consertar algo.

Eu recomendo ler algumas informações sobre como o PAM funciona para que você saiba o que fazer se ele quebrar. Também recomendo que a maioria dos usuários abordem esse problema de um ângulo diferente (criando uma conta de usuário separada para administração), pois a solução pode ser suscetível a ataques de tabela de hash em sua senha, caso você não tenha definido suas permissões corretamente.

Se você está determinado a prosseguir, você precisará instalar um novo módulo PAM. O pam_pwdfile usa o arquivo de tipo antigo / etc / passwd para autenticação, o que é ótimo para usar senhas diferentes para serviços diferentes. Ele não fornece reconhecimento de conta - você pode criar pares de nome de usuário / senha para usuários que não existem no sistema. Já que vamos usá-lo para o sudo, não importa, pois vamos deixar o sudo checar se a conta existe da maneira usual.

sudo apt-get install libpam-pwdfile

Eu também recomendo pegar um prático editor de arquivos htpasswd. Benjamin Schweizer criou um prático editor em python que funciona bem. Pegue no link e instale sua dependência:

sudo apt-get install python-newt

Gere um arquivo de formato htpasswd usando a ferramenta - sudo python htpasswd_editor sudo.passwd . Coloque um nome de usuário e senha usando o nome de usuário same que você usará para o sudo - um para cada usuário que o usará. Copie-o para algum lugar seguro (ao testar isso, coloquei em /etc/sudo.passwd) e torne-o ilegível para usuários comuns: chmod 660 /etc/sudo.passwd as root.

** Verifique se o arquivo é de propriedade de root e ilegível para outros usuários. ** Essa é uma vulnerabilidade, pois o arquivo contém uma senha com hash e, se for legível ou gravável por outros usuários, a segurança será prejudicada. É por esse motivo que não recomendo esse método em uma máquina que deve ser mantida segura.

Por fim, edite o arquivo /etc/pam.d/sudo . Adicione a seguinte linha acima das outras @include ... lines:

auth    required    pam_pwdfile.so pwdfile /etc/sudo.passwd

Obviamente, substituindo o último argumento pelo caminho para o seu arquivo htpasswd gerado. Comente a próxima linha: #@include common-auth para se certificar de que está usando o novo método de autenticação.

** Palavra de cautela ** - você precisará editar o arquivo /etc/pam.d/sudo de um terminal raiz. Não feche isto sem testar! Se você fizer isso, você não poderá fazer login novamente (se tiver quebrado alguma coisa) e terá que inicializar a partir de um disco de recuperação para reparar seu sistema. Teste antes de sair abrindo um novo terminal e tente usar sudo . Você deve descobrir que ele não funcionará mais com sua senha de login normal, mas, em vez disso, exige a nova senha usada quando você gerou o arquivo passwd. Para atualizar o arquivo, use a ferramenta útil novamente.

    
por Aaron D 19.02.2013 / 08:20