Inspirado por esta pergunta ....
Eu sou a única pessoa que usa meu sistema com a versão 12.04.
Toda vez que eu emito um sudo
comando; o sistema solicita a senha do usuário (o que é bom à sua maneira).
No entanto, eu estava pensando; sem ativar a conta raiz ; como posso executar os comandos sudo que não solicitarão a senha do usuário para autenticação.
NOTA: Desejo 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, enquanto estiver usando o 'Ubuntu software center' ou executando um script bash arrastando e soltando o arquivo something.sh no terminal.
command-line
password
sudo
root
Bhavesh Diwan
fonte
fonte
Respostas:
sudo -i
é o caminho a percorrer, se você não quiser digitar uma senha a cada 10 minutos enquanto faz modificações no sistema (ou em outros sistemas) e não deseja modificar nenhum arquivo do sistema.Isso fará com que você faça o root usando sua
sudo
senha de usuário. Quando você fecha o console ou digitaexit
que está de volta ao seu usuário normal.fonte
exit
ou até fechar a janela do emulador de terminal.Você pode configurar
sudo
para nunca solicitar sua senha.Abra uma janela do Terminal e digite:
Na parte inferior do arquivo, adicione a seguinte linha:
Onde
$USER
está o seu nome de usuário no seu sistema. Salve e feche o arquivo sudoers (se você não alterou o editor de terminal padrão (você saberá se tem), pressione ctl + x para sairnano
e solicitará que você salve).A partir do Ubuntu 19.04, o arquivo agora deve parecer algo como
Depois disso, você pode digitar
sudo <whatever you want>
uma janela do Terminal sem ser solicitada a senha.Isso se aplica apenas ao uso do
sudo
comando no terminal. Sua senha ainda será solicitada se você (por exemplo) tentar instalar um pacote a partir do centro de softwarefonte
sudo visudo
vez de editá-lo diretamente. A alteração das permissões dos sudoers também pode ser bloqueada. Ao editar comvim
, use:wq!
para gravar em arquivos somente leitura e saia do editor. Dessa forma, as permissões 644 não são necessárias.sudo install crapware
solicite não solicitará uma senha nesse caso e poderá atrapalhar tudo o que você possui, e você não precisa estar fisicamente próximo a uma máquina para distribuir scripts da última vez que verifiquei. .. Este é apenas um exemplo.rm -rf ~
atrapalhar algumas coisas). No geral, eu não chamaria de «grave risco de segurança» a simples remoção do prompt de senha do sudo.Os tempos limite do sudo raiz são a maneira mais fácil e segura de fazer isso. Apresentarei todos os exemplos, mas esteja avisado de que é muito arriscado qualquer maneira de fazer isso, embora seja muito mais seguro:
Isso abre um editor e aponta para o arquivo sudoers - o Ubuntu usa como padrão nano, outros sistemas usam o Vi. Agora você é um superusuário editando um dos arquivos mais importantes do seu sistema. Sem estresse!
(Vi instruções específicas anotadas com (vi!) . Ignore-as se estiver usando o nano.)
Use as setas do teclado para ir para o final da
Defaults
linha.(vi!) pressione a tecla A (maiúscula "a") para mover-se no final da linha atual e entrar no modo de edição (acrescente o último caractere na linha).
Agora digite:
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ê estiver satisfeito com sua edição, digite
:w
Enterpara escrever o arquivo e:q
Entersair do vi. Se você cometeu um erro, talvez a maneira mais fácil seja refazer desde o início, sair sem salvar (pressione Escapepara entrar no modo de comando) e digite: q! Enter.Pressione Ctrl+ e X, em seguida Y, Enterpara salvar seu arquivo e sair do nano.
Você pode querer ler as páginas de manual do sudoers e vi para obter informações adicionais.
Redefina o valor do tempo limite usando:
Estas instruções são para remover a solicitação de 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 estiver no final, pode ser anulado por entradas posteriores):Substitua
<username>
pelo seu nome de usuário (sem o<>
). Isso pressupõe que o Ubuntu tenha criado um grupo com o mesmo nome que o seu nome de usuário, o que é típico. Você pode usar alternadamente os usuários do grupo ou qualquer outro grupo em que você esteja. Apenas verifique se você está nesse grupo. Isso pode ser verificado em Sistema -> Administração -> Usuários e Grupos.Exemplo:
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. Agora, você deve executar o comando sudo sem ser solicitada uma senha.
A conta raiz
Ativando a conta raiz
Habilitar a conta raiz 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 logon root persistente, a melhor alternativa é simular um shell de logon root usando o seguinte comando:
No entanto, se você deve habilitar logins raiz, pode fazê-lo assim:
Desativando sua conta root
Se, por algum motivo, você ativou sua conta root e deseja desativá-la novamente, use o seguinte comando no terminal:
Sudo do grupo em todo o sistema
Faça logoff e, em seguida, volte.
Redefinir o tempo limite do sudo
Você pode garantir que o sudo solicite a senha da próxima vez executando:
fonte
sudo env EDITOR=/bin/nano visudo
para editar de forma confiávelsudoers
no nano. (update-alternatives pode ser usado para definir o editor também)A maneira preferida de conceder permissões individuais (ou em grupo) seria adicionar arquivos em
/etc/sudoers.d
Isso separa as alterações locais da política padrão e economiza tempo, caso o arquivo dos sudoers de distribuição seja alterado.
Para tornar o usuário conectado no momento um sudoer e
sudo
não solicitar uma senha, useisso criará um arquivo chamado
/etc/sudoers.d/$USER
(onde$USER
está o nome de usuário do usuário em que você efetuou login como quando executou esse comando), deixando claro quais usuários recebem permissão.Se você quiser fazer isso para um usuário diferente, substitua as duas instâncias
$USER
por outro nome de usuário no comando acima.Da mesma forma, um arquivo pode ser usado para gerenciar várias diretivas:
Veja
/etc/sudoers.d/README
eman sudoers
para mais informações.fonte
tee
comando.sudo sh -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/$(logname)'
sudo chmod 440 /etc/sudoers.d/$(logname)
sudo ... >file
shell, o redirecionamento é executado no shell original, portanto, poderia funcionar apenas no shell raiz.echo "username ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/username
Nice one-liner para remover as instruções do sudo para o usuário atual
fonte
echo "$USER ALL=(ALL:ALL) NOPASSWD: ALL" | sudo env EDITOR="tee -a" visudo
sóvisudo
precisasudo
afinal de contas (e nemenv
será necessário na configuração padrão, IIRC).sudo visudo
), enquanto testa o resultado (com o editor ainda aberto), para os novos usuários que podem ficar tentados a experimentar esse "one-liner".sudo chmod 440 /etc/sudoers.d/$(logname)
corrigir as permissões de arquivo, conforme indicado no README desse diretório.Claro que o que você quer fazer não é recomendado. Depois de um tempo, embora a entrada
sudo
se torne tão automática que sua utilidade diminua.Outra abordagem é deixar o arquivo sudoers como está e, enquanto faz algo complicado para os seus centenas de servidores, entre
sudo bash
. Isso fornecerá um shell que será autenticado como root até você sair dele.fonte
sudo -s
ousudo -i
provavelmente são idéias melhores do quesudo bash
, porque garantem que o ambiente seja saudável e outras coisas.sudo
comandos (especialmente pensando emsudo pip ...
) requeremsudo -H
(defina HOME) para que o comando seja executado corretamente. Em outros casos,sudo -E
(preservar env) pode ser necessário. A execuçãosudo bash
provavelmente funcionará na maioria dos casos, mas não em todos, e quando não funcionar, não ficará claro o porquê.Do Superusuário vem uma boa resposta:
Use a opção -S que lê a senha de STDIN:
Substitua
<password>
por sua senha.fonte
echo
para que não apareça na história?Um forro
sudo sed -i /etc/sudoers -re 's/^%sudo.*/%sudo ALL=(ALL:ALL) NOPASSWD: ALL/g'
fonte
Esta é uma solução de uma linha que também altera as permissões de arquivos, conforme indicado em
/etc/sudoer.d/README
:fonte
Expandindo a ideia @upteryx.
Foi assim que implementei o usuário não raiz e sem senha em uma imagem efêmera do Docker para uso em um pipeline do CICD:
fonte