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

10

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

2 respostas

16

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.

Certifique-se de que o arquivo seja de propriedade root e ilegível para outros usuários. Esta é uma vulnerabilidade, pois o arquivo contém uma senha com hash e, se for legível ou gravável por outros usuários, segurança mal. É 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 precaução - 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
1

Existe uma solução muito mais simples para a pergunta original e é a maneira como eu corro:

  • crie um usuário não administrador
  • crie um usuário administrativo

Sempre faça login como usuário não administrador e sempre que o usuário não administrador precisar fazer algo "adminy", apenas:

fab-user@fab-ux:/media/Data/Temp
$ su - fab-root 
Password: 
fab-root@fab-ux:~
$ sudo smartctl --all /dev/sdc

Sim, não é o que você quer , mas é o que você realmente precisa

    
por Fabby 17.08.2018 / 13:47