Como faço para o sudo solicitar a senha root?

25

Quando executo sudocomo um usuário normal sem privilégios, ele solicita minha senha, não a senha root. Isso geralmente é conveniente, mas reduz a quantidade de informações que alguém precisaria ter para executar comandos como root. Então, como posso sudosolicitar a senha root em vez da senha do usuário que está invocando?

Eu sei que isso seria feito com uma linha de entrada /etc/sudoers, mas nunca consigo analisar corretamente a gramática BNF na página de manual para descobrir exatamente o que escrever.

David Z
fonte
Eu recomendo que você restrinja os comandos permitidos como usuário não root para que você não precise se preocupar em expor comandos arbitrários.
Slartibartfast
@slartibartfast: mas o que acontece quando eu preciso executar um comando como root que não está na lista pré-aprovada?
David Z

Respostas:

25

Ok, aqui está novamente, para que você possa definir a marca de seleção.

Em /etc/sudoers, adicione esta linha:

Defaults rootpw

para ativar a flag rootpw, fazendo com que o sudo solicite a senha root.

Florian Diesch
fonte
7
Você sempre deve usar o visudocomando em vez de editar manualmente o /etc/sudoersarquivo. visudovalida o arquivo para se certificar de que ele está correto antes de salvar, assim você não ficar trancado para fora de sudo se você cometer um erro de sintaxe ... askubuntu.com/a/81054/166411
Colin D Bennett
5

Você precisa ativar a rootpwbandeira.

Ignacio Vazquez-Abrams
fonte
Como eu disse, não consegui trabalhar com a notação BNF na página do manual - então em qual linha eu inseri /etc/sudoerspara ativar esse sinalizador?
David Z
2
Padrão rootpw
Florian Diesch
@ Florian: o que você sabe, é assim tão fácil :-) Se você postar isso como resposta, obtém a marca de seleção.
David Z
3

Sei que essa pergunta é antiga, mas é a pergunta mais concisa que encontrei para esse caso de uso (que é uma porcentagem menor, verdadeira, mas mesmo assim legítima e útil no cenário certo).

Após reunir todas as etapas de várias fontes - incluindo várias respostas para esta pergunta, essas etapas funcionam no Ubuntu-Gnome 16.04 LTS:

  1. Defina uma senha para root
    • Isso é CRÍTICO de fazer PRIMEIRO ! (O Ubuntu automaticamente não tem senha para o usuário ROOT devido à configuração de segurança padrão.
    • Se você não fizer isso primeiro, ficará impedido de acessar os privilégios de root. Isso pode ser superado inicializando com um Live Disk, montando o disco rígido e editando o arquivo sudoers, mas é melhor evitar isso.
    • Abra um terminal e digite: sudo passwd
    • Defina sua nova senha para o usuário ROOT.
  2. Altere a configuração do SUDO para exigir a senha root
    • SUDO requer que o usuário solicite privilégios de root
    • A configuração do sinalizador "rootpw" informa ao SUDO para exigir a senha do usuário root.
    • Abra um terminal e digite: sudo visudo
    • Isso abrirá o arquivo "/ etc / sudoers"
    • Após a outra linha "Padrões", adicione: Defaults rootpw
    • Salve-o (supondo que você esteja no nano, que é o padrão, este é CTRL + O)
    • Feche o arquivo (CTRL + X) e saia do terminal
  3. Você está feito!

Apenas uma observação rápida - eu também queria ter certeza de que o usuário root não pudesse ser usado para fazer login a partir do login gráfico e, assim, procurar maneiras de excluir. Aparentemente, o usuário root é excluído por padrão e não pode ser usado para efetuar login através do login gráfico do Gnome - o que é uma coisa muito boa!

SRDC
fonte
Você poderia sugerir melhorias para reverter um voto negativo?
SRDC
Não parece estar errado.
Ruslan
1
Possivelmente porque uma configuração simples (e funcional) de: root ALL=(ALL) ALL Defaults targetpw ALL ALL=(ALL) ALL Permite o sudo raiz para todos os usuários que conhecem a senha raiz. Alterar ingenuamente as duas últimas linhas para sua solução Defaults rootpwcausa um bloqueio de sudo. Você também precisa adicionar seu usuário da seguinte sudoersforma: myusername ALL=(ALL) ALLou conceder privilégios semelhantes a um grupo e depois adicionar myusernamea esse grupo.
Paul Parker
1

Uma configuração comum que requer a senha do destino (não o que queremos):

Defaults targetpw
ALL ALL=(ALL) ALL

A segunda linha seria lida em voz alta como: "TODOS os usuários em TODOS os hosts podem representar (TODOS) os usuários ao executar TODOS os comandos". e os Defaults targetpwmeios para que eles precisem saber a senha do usuário para o qual estão representando.

Alterando ingenuamente essa configuração simples para:

Defaults rootpw

não deixaria nenhum usuário ou grupo com o privilégio de executar comandos como outro usuário.

Uma possibilidade de trabalho seria:

Defaults rootpw
myuser ALL=(ALL) ALL

Em inglês simples, myuseragora tem a capacidade de executar todos os comandos como qualquer usuário em todos os hosts, desde que a senha root seja conhecida.

Outra possibilidade de trabalho seria:

Defaults rootpw
%sudousers ALL=(ALL) ALL

Qualquer membro do sudousersgrupo poderá executar TODOS os comandos como qualquer usuário em TODOS os hosts, desde que a senha raiz seja conhecida. Para permitir myusera execução de comandos sudo, sudousersseria necessário adicionar seus grupos secundários.

su
usermod -a -G sudousers myuser
exit
Paul Parker
fonte
Ótima explicação. Mais detalhado do que o passo a passo que publiquei (que funcionava com base nos padrões do Ubuntu).
SRDC 8/06
0

Você pode simplesmente desligar o sudo e usá-lo su -c.

Nitrodista
fonte
Inconveniente porque tenho que digitar minha senha toda vez que a executo. O caso de uso aqui é ter que executar vários comandos como raiz em rápida sucessão.
David Z
-1

Usando

sudo su

permitirá que você execute quantos comandos desejar em sucessão.


fonte
2
Boa ideia, mas, a menos que eu mude sudopara solicitar a senha root, isso ainda permitirá que alguém obtenha acesso root apresentando apenas uma senha (não a raiz). Portanto, ele realmente não trata da preocupação de segurança que levou minha pergunta.
David Z
Em vez de usar a capacidade do sudo para limitar o acesso do usuário, você está expondo sua senha root a vários usuários. Você também está removendo a capacidade de proteger seu servidor removendo a senha da raiz.
BillThor