Execute sudo sem senha?

229

Inspirado por esta pergunta ....

Eu sou a única pessoa que usa meu sistema com 12.04.
Toda vez que eu emito um comando sudo ; o sistema pede a senha do usuário (o que é bom em seu próprio caminho).
No entanto eu estava pensando; sem ativar a conta raiz ; Como posso executar os comandos sudo que não solicitam a senha do usuário para autenticar.

NOTA: Eu quero executar o comando sudo sem autenticar via senha; somente quando eles são executados via terminal.
Não quero remover essa camada extra de segurança de outras funções, por exemplo, usando o 'Ubuntu software center' ou executando um script bash arrastando e soltando o arquivo something.sh para o terminal.

    
por Z9iT 06.06.2012 / 14:30

7 respostas

66

sudo -i é o caminho a percorrer se você não quiser digitar uma senha a cada 10 minutos ao fazer modificações em seu sistema (ou outros sistemas) e não quiser modificar nenhum arquivo do sistema. / p>

Ele mudará para o root usando sua senha de usuário sudo , quando você fechar o console ou digitar exit você está de volta ao seu usuário normal.

    
por Bruno Pereira 06.06.2012 / 15:36
454

A abordagem para resolver seu problema é colocar seu usuário no arquivo sudoers, como você pode ver.

Abra a janela do terminal e digite:

sudo visudo

Na parte inferior do arquivo, digite o seguinte:

$USER ALL=(ALL) NOPASSWD: ALL

Onde $USER é seu nome de usuário em seu sistema. Salve e feche o arquivo sudoers (se você não tiver alterado o editor de terminal padrão (você saberá se tiver), pressione ctl + x para sair de nano (mas observe que a captura de tela abaixo mostra vim ), e pedir-lhe-á para salvar).

]

Depoisdisso,vocêpode,najaneladoterminal,digitarsudo<Whateveryouwant>,semprecisarinformarasenha.

Issoseaplicaapenasaocomandosudonajaneladoterminal.Porexemplo,quandovocêtentarinstalarumpacotenocentrodesoftware,vocêserásolicitadoainserirsuasenha,comovocêpodevernapróximatela.

Acho que é isso que você quer.

    
por Octávio Filipe Gonçalves 06.06.2012 / 15:20
31

Os tempos limite de sudo raiz são a maneira mais fácil e segura de fazer isso. Vou apresentar todos os exemplos, mas esteja avisado que é muito arriscado fazer isso, embora seja muito mais seguro:

sudo visudo

Isto abre um editor e aponta para o arquivo sudoers - o padrão do Ubuntu é nano, outros sistemas usam o Vi. Agora você é um superusuário que edita um dos arquivos mais importantes do seu sistema. Sem stress!

(Vi instruções específicas anotadas com (vi!) . Ignore estas se você estiver usando nano.)

Use as teclas de seta para ir até o final da linha Defaults .

(vi!) pressione a tecla A (maiúscula "a") para se mover no final da linha atual e entrar no modo de edição (acrescentar após o último caractere na linha). p>

Agora digite:

,timestamp_timeout=X

em que X é a expiração do tempo limite em minutos. Se você especificar 0, sempre será solicitada a senha. Se você especificar um valor negativo, o tempo limite nunca expirará. Por exemplo, Defaults env_reset,timestamp_timeout=5 .

(vi!) pressione Escape para retornar ao modo de comando. Agora, se você estiver satisfeito com sua edição, digite :w Enter para gravar o arquivo e :q Digite para sair do vi. Se você cometeu um erro, talvez a maneira mais fácil seja refazer do início, sair sem salvar (pressione Escape para entrar no modo de comando) e então digite: q! Digite .

Pressione Ctrl + X , então Y , depois Digite para salvar seu arquivo e sair do nano.

Você pode querer ler os sudoers e as páginas do manual do vi para obter informações adicionais.

man sudoers
man vi

Redefina o valor do tempo limite usando:

sudo -k

Estas instruções são para remover o prompt de uma senha ao usar o comando sudo. O comando sudo ainda precisará ser usado para acesso root.

Edite o arquivo sudoers

Abra uma janela do Terminal. Digite sudo visudo . Adicione a seguinte linha ao END do arquivo (se não no final, pode ser anulado por entradas posteriores):

<username> ALL=NOPASSWD: ALL

Substitua <username> pelo seu nome de usuário (sem <> ). Isto supõe que o Ubuntu tenha criado um grupo com o mesmo nome do seu nome de usuário, o que é típico. Você pode alternadamente usar os usuários do grupo ou qualquer outro grupo em que esteja. Apenas certifique-se de estar nesse grupo. Isso pode ser verificado indo para Sistema - > Administração - > Usuários e Grupos.

Exemplo:

michael ALL=NOPASSWD: ALL

Digite ^ X ( Ctrl + X ) para sair. Isso deve solicitar uma opção para salvar o arquivo, digite Y para salvar.

Efetue logout e, em seguida, efetue login novamente. Isso agora deve permitir que você execute o comando sudo sem que seja solicitada uma senha.

A conta raiz

Ativando a conta root

A ativação da conta raiz raramente é necessária. Quase tudo que você precisa fazer como administrador de um sistema Ubuntu pode ser feito via sudo ou gksudo. Se você realmente precisa de um login de raiz persistente, a melhor alternativa é simular um shell de login root usando o seguinte comando:

sudo -i

No entanto, se você precisar ativar logins de root, você pode fazer assim:

sudo passwd root

> Desativando sua conta root

Se por algum motivo você tiver ativado sua conta root e desejar desativá-la novamente, use o seguinte comando no terminal:

sudo passwd -dl root

sudo do grupo em todo o sistema

root$ echo "%sudo ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

Efetue logout e volte a entrar.

Redefinir o tempo limite do sudo

Você pode garantir que o sudo peça senha da próxima vez executando:

sudo -k
    
por user209328 30.10.2013 / 02:15
10

A maneira preferida de conceder permissões individuais (ou de grupo) seria adicionar arquivos em /etc/sudoers.d

Isso separa as alterações locais da política padrão e economiza tempo no caso de alterações no arquivo sudoers da distribuição.

Por exemplo:

sudo echo "username ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/username

Tornará muito claro quais usuários recebem permissão.

Da mesma forma, um arquivo pode ser usado para gerenciar várias diretivas:

sudo echo "username ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers.d/local

Por favor, veja /etc/sudoers.d/README para mais informações.

    
por user1656671 01.02.2017 / 16:54
5

Nice one-liner para remover sudo prompts para o usuário atual

sudo bash -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" | (EDITOR="tee -a" visudo)'
    
por Eric Landry 27.06.2016 / 19:50
4

É claro que o que você quer fazer não é recomendado. Depois de um tempo, embora inserir sudo se torne tão automático que sua utilidade diminui.

Outra abordagem é deixar seu arquivo sudoers como está e, ao fazer algo complicado para seus servidores, digite sudo bash . Isso lhe dará um shell que será autenticado como root até você sair dele.

    
por John S Gruber 06.06.2012 / 15:27
1

Em Super User , temos uma boa resposta:

Use o comutador -S que lê a senha de STDIN:

echo <password> | sudo -S <command>

Substitua <password> pela sua senha.

    
por WinEunuuchs2Unix 17.05.2018 / 02:12