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


10

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


1
Por que não fazer apenas duas contas, uma para uso normal e outra com permissão para usar o sudo.
Luis Alvarado

Não, eu precisar dele em apenas uma conta
Varun Sridharan

Por que você precisa que essa seja uma conta? Você pode criar uma conta separada com acesso sudo mas sem uma pasta pessoal separada, em seguida, adicionar esse usuário ao mesmo grupo que o usuário normal e configurá-lo para usar a mesma pasta para casa comsudo usermod -d /path/to/new/home
Warren Hill

@SVarun Atualizei minha resposta com as etapas que funcionam para mim desde a última vez que você comentou. Você pode verificar e me informar se funciona para você?
Aaron D

Respostas:


16

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

Eu recomendo a leitura de algumas informações sobre como o PAM funciona para que você saiba o que fazer se quebrar. Também recomendo que a maioria dos usuários aborde esse problema de outro ângulo (criando uma conta de usuário separada para administração) porque a solução pode ser suscetível a ataques de tabela de hash na sua senha se você não tiver definido suas permissões corretamente.

Se você estiver determinado a prosseguir, precisará instalar um novo módulo PAM. O pam_pwdfile usa o arquivo do tipo / etc / passwd à moda antiga 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. Como o usaremos no sudo, isso não importa, pois deixaremos o sudo verificar se a conta existe da maneira usual.

sudo apt-get install libpam-pwdfile

Também recomendo pegar um prático editor de arquivos htpasswd. Benjamin Schweizer criou um editor prático em python que funciona bem. Pegue-o em http://benjamin-schweizer.de/htpasswd_editor.html e instale sua dependência:

sudo apt-get install python-newt

Gere um arquivo no formato htpasswd usando a ferramenta - sudo python htpasswd_editor sudo.passwd. Coloque um nome de usuário e senha usando o mesmo nome de usuário que você usará para o sudo - um para cada usuário que o usará. Copie-o para um local seguro (ao testar isso, eu o coloco em /etc/sudo.passwd) e deixo ilegível para usuários comuns: chmod 660 /etc/sudo.passwdcomo root.

Verifique se o arquivo pertence à raiz 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 eu não recomendo esse método em uma máquina que deve ser mantida em segurança.

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

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

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

Palavra de cautela - você precisará editar o /etc/pam.d/sudoarquivo a partir de um terminal raiz. Não feche isso sem testar! Se o fizer, talvez não seja possível fazer login novamente (se você quebrou alguma coisa) e precisaria 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 achar que ele não funcionará mais com sua senha de login normal, mas requer a nova senha usada quando você gerou o arquivo passwd. Para atualizar o arquivo, use a ferramenta útil novamente.


Eu preciso executar no Ubuntu existe alguma outra maneira
Varun Sridharan

Atualizei a resposta - testei esse método e ele faz o que você deseja, se entendi sua pergunta corretamente. Por favor tente.
Aaron D

1
+50 de recompensa. @AaronD sua resposta resolveu minha pergunta . Obrigado!!!
Robbie Wxyz

Estou feliz que você tenha achado útil!
Aaron D

1

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

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

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.