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.
sudo usermod -d /path/to/new/home
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.
sudo usermod -d /path/to/new/home
Respostas:
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.passwd
como 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/sudo
arquivo. 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-auth
para garantir que esteja usando o novo método de autenticação.
Palavra de cautela - você precisará editar o /etc/pam.d/sudo
arquivo 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.
Existe uma solução muito mais simples para a pergunta original e é a maneira como corro:
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