Questão Execute sudo sem senha?


Inspirado por isso questão....

Eu sou a única pessoa usando meu sistema com 12.04.
Toda vez que eu emito um sudo comando; o sistema pede a senha do usuário (o que é bom em seu próprio caminho).
No entanto eu estava pensando; sem ativar o raiz conta; 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.
Eu 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.


223
2018-06-06 12:30


origem


então você só quer ser solicitado para a senha no terminal e para outras coisas não, ou o contrário arround ?! nos dois sentidos, acho que é uma violação de alta segurança - Dr_Bunsen
Eu quero que o sistema não pode pedir senha somente quando no terminal ... para qualquer outra finalidade, o sistema deve pedir uma senha. Este requisito é apenas temporário, e para ser usado durante a configuração de novos servidores. Durante a instalação de novos servidores, é preciso horas de configuração com comandos sudo. A emissão de senha a cada 15 min. é dor de cabeça. Eu não quero usar conta root. - Z9iT
Você precisa ler a discussão em: askubuntu.com/questions/135428/… - david6
Com certeza você pode prolongar o tempo limite. Além disso, se você está fazendo configurações de servidor novas com frequência, deve pensar em automatizar o processo. Você não é pago para digitar, você é pago para resolver problemas e para terminar. - MauganRa
Relacionado: Como executar o comando sudo sem senha? - Eliah Kagan


Respostas:


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

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


64
2018-06-06 13:36



Será verdade que eu entro em senha apenas uma vez ... e até a hora em que não saio; tempo 5 horas. ou 15 .... o sistema não pedirá autenticação por senha quando algum comando sudo for emitido. - Z9iT
@ Z9iT até que você digite exit ou até você fechar a janela do emulador de terminal. - Bruno Pereira
Obrigado .. Aceitei esta resposta porque ele serve o propósito de emitir comandos sudo sem autenticação de senha por n-horas até o momento em que não sairemos .. Não modificar arquivos do sistema é um plus. - Z9iT
Isso realmente não responde a pergunta, porque você ainda precisa inserir a senha para se tornar root nesse ponto. - Adam F
Não se você estiver executando uma máquina virtual em um ambiente seguro e você só quer que a coisa faça algo imediatamente e você não quer lidar com senhas. Esta resposta não responde à pergunta, enquanto é indiscutivelmente útil informação. Eu concordo com Adam F - Jonathan Komar


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 é o seu nome de usuário no seu sistema. Salve e feche o arquivo sudoers (se você não tiver alterado seu editor de terminal padrão (você saberá se tiver), pressione ctl + x para sair nano (mas note que a imagem abaixo mostra vim), e ele irá pedir para você salvar).

sudoers file]

Depois disso, você pode, na janela do terminal, digitar sudo <Whatever you want>, sem ser solicitada a senha.

Isso só se aplica, para sudo comando na janela do terminal. Por exemplo, quando você tentar instalar um pacote no centro de software, você será solicitado a inserir sua senha, como você pode ver na próxima tela.

gui password prompt

Eu acho que isso é o que você quer.


438
2018-06-06 13:20



Recomenda-se usar sudo visudo em vez de editá-lo diretamente. Também alterar as permissões dos sudoers pode se bloquear. Ao editar com vim, usar :wq! para gravar em arquivos somente leitura e sair do editor. Dessa forma, as permissões 644 não são necessárias. - Lekensteyn
Este é um sério risco de segurança, qualquer pessoa que assumir qualquer conta com direitos sudo pode assumir o controle do sistema completo e bloquear qualquer acesso adicional a este computador, seriamente não recomendado. - Bruno Pereira
@ wil93 você está perdendo o ponto: um script que pede sudo install crapware não vai pedir uma senha neste caso e pode estragar tudo o que você tem, e você não precisa estar fisicamente ao lado de uma máquina para distribuir scripts última vez que eu verifiquei ... Este é apenas um exemplo. - Bruno Pereira
@BrunoPereira Se você planeja executar scripts não confiáveis ​​então aquele é o risco de segurança (mesmo que o sudo peça uma senha, um script mal-intencionado pode sempre fazer rm -rf ~bagunçando algumas coisas). No geral, eu não chamaria "risco de segurança grave" a simples remoção de senha do sudo. - wil93
Concordar com @ wil93. Ao executar um script não confiável, a inserção de senha não é mais do que uma chance de cancelar o processo, enquanto eu duvido que seja inútil para a maioria das pessoas. O ponto é que você sabe de onde o script e o que ele faz. - Chad


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

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

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

Use as setas para mover para o final do Defaults linha.

(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).

Agora digite:

,timestamp_timeout=X

onde 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ê está feliz com sua edição, digite :w  Entrar para gravar o arquivo e :q  Entrar para sair do vi. Se você cometeu um erro, talvez a maneira mais fácil seja refazer do início, sair sem salvar Escapar para entrar no modo de comando) e digite: q! Entrar.

Acertar Ctrl+X, então Y, então Entrar para salvar seu arquivo e sair do nano.

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

man sudoers
man vi

Redefina o valor do tempo limite usando:

sudo -k

Essas 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. Digitar 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

Substituir <username> com seu nome de usuário (sem o <>). 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) sair. Isso deve solicitar uma opção para salvar o arquivo, digite Y para salvar.

Efetue logout e, em seguida, efetue logon novamente. Isso agora deve permitir que você execute o comando sudo sem ser solicitado por uma senha.

A conta root

Ativando a conta root

Ativar a conta root raramente é necessário. 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ê devo ativar logins root, você pode fazer assim:

sudo passwd root

Como desabilitar 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

Grupo de todo o sistema sudo

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

Efetue logout e, em seguida, volte.

Redefinir o tempo limite do sudo

Você pode ter certeza que o sudo pede senha da próxima vez executando:

sudo -k

30
2017-10-30 01:15



Eu postei isso antes de adicionar, para uma maneira ampla de fazer isso e outros lerem aqui: - user209328
Esta foi uma resposta tardia, mas é a mais abrangente em termos das opções que ela oferece. - jenming


A maneira preferida de conceder permissões individuais (ou de grupo) seria adicionar arquivos /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 maiores informações.


10
2018-02-01 15:54



o comando echo falhou, apesar de eu estar root. mas, eu adicionei o arquivo e o editei diretamente e isso funcionou no ubuntu mais recente (enquanto adicionar o usuário aos sudoers diretamente não funcionou!) - scape
O caminho certo é fazer isso com tee comando. - woto


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)'

5
2018-06-27 17:50



Eu acho que você poderia apenas fazer: echo "$USER ALL=(ALL:ALL) NOPASSWD: ALL" | sudo env EDITOR="tee -a" visudo, só visudo necessidades sudo afinal (e até env não será necessário na configuração padrão, IIRC). - muru
há tanta coisa que poderia dar errado aqui (todo erro do usuário, é claro), que é preferível, na minha humilde opinião, editar o arquivo sudoer diretamente (sudo visudo), durante o teste do resultado (com o editor ainda aberto), para os novos usuários que podem ser tentados a tentar este "one-liner". - michael
Obrigado pelo feedback! Eu estava apenas rapidamente tentando script-ify a remoção de prompt de senha sudo em minhas VMs de teste volátil. Sinta-se à vontade para sugerir melhorias :) - Eric Landry


Claro que o que você quer fazer não é recomendado. Depois de um tempo, apesar de entrar sudo torna-se tão automático que sua utilidade diminui.

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


4
2018-06-06 13:27



sudo -s ou sudo -i são provavelmente melhores idéias do que sudo bash, porque eles garantem que o ambiente é são e as coisas. - Darael
"sane e coisas" não é geralmente no reino de "melhores idéias", alguém poderia dar uma explicação técnica do porquê sudo -s ou sudo -i é melhor que sudo bash? (Edit: Aqui está uma questão relevante askubuntu.com/questions/376199/… ) - Nuzzolilo
um número de sudo comandos (pensando especialmente em sudo pip ...) exigem sudo -H (set HOME) para que o comando seja executado corretamente. Em outros casos, sudo -E (preserve env) pode ser necessário. Corrida sudo bash provavelmente funcionará na maioria dos casos, mas não em todos, e quando isso não acontecer, não ficará claro o porquê. - michael
sudo su é a maneira tradicional de trocar de papéis e começar a agir como um administrador de sistemas. - user1656671


A partir de Superusuário vem uma boa resposta:

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

echo <password> | sudo -S <command>

Substituir <password> com sua senha.


1
2018-05-17 00:12