Eu estou tentando compilar algumas fontes usando um makefile. No makefile, existem vários comandos que precisam ser executados como sudo
.
Quando eu compilo as fontes de um terminal, tudo corre bem e o make é pausado na primeira vez em que um sudo
comando é executado aguardando a senha. Depois de digitar a senha, retome e conclua.
Mas eu gostaria de poder compilar as fontes no NetBeans. Então, iniciei um projeto e mostrei ao netbeans onde encontrar as fontes, mas quando compilei o projeto, ocorreu o erro:
sudo: no tty present and no askpass program specified
A primeira vez que ele atinge um sudo
comando.
Procurei o problema na internet e todas as soluções que encontrei apontam para uma coisa: desabilitar a senha desse usuário. Como o usuário em questão aqui é root. Eu não quero fazer isso.
existe alguma outra solução?
sudo -n my-command
funcionou para mim. HIH!sudo: a password is required
Respostas:
Conceder ao usuário o uso desse comando sem solicitar a senha deve resolver o problema. Primeiro abra um console do shell e digite:
Em seguida, edite esse arquivo para adicionar ao final:
por exemplo
vai permitir que o usuário
john
para sudopoweroff
,start
estop
sem ser solicitado para a senha.Observe na parte inferior da tela as teclas que você precisa usar no visudo - isso não é vi a propósito - e saia sem salvar ao primeiro sinal de qualquer problema. Aviso de saúde: corromper este arquivo terá sérias conseqüências, edite com cuidado!
fonte
Tentar:
Use
NOPASSWD
linha para todos os comandos, quero dizer:Coloque a linha depois de todas as outras linhas no
sudoers
arquivo.Isso funcionou para mim (Ubuntu 14.04).
fonte
jenkins ALL=(ALL) NOPASSWD: /var/lib/jenkins/wrapper_script
jenkins
é apenas um nome de usuário? Deve ser o nome do usuário da máquina host? E se o nome de usuário na máquina host corresponder ao nome de usuário do servidor remoto?Tentar:
Isso removerá os erros acima.
fonte
-t Force pseudo-tty allocation. This can be used to execute arbitrary screen-based programs on a remote machine
veja também: sudo-no-tty-present-and-no askpass-program-specific Tambémsudo -A
permite configurar umsudo
programa askpass, mas apenas vejo GUIs. Alguém conhece um askpass para permitirssh remotehost sudo -A askpass
?-A
forsudo
não aceita argumentos e requer um ambienteSUDO_ASKPASS
ou umsudo.conf
Sossh remotehost sudo -A command
ainda funcionaria. Ainda curioso sobre um programa askpass baseado em terminal.Pseudo-terminal will not be allocated because stdin is not a terminal.
:(Depois de todas as alternativas, eu encontrei:
Fonte
O comando acima ainda precisa da senha a ser inserida. Para remover a inserção manual de senha, em casos como jenkins, este comando funciona:
fonte
sudo -S <command>
-true
acontece de ser um comando fictício que retorna um código de saída 0 (false
é um comando que retorna 1). Obrigado, esta é a única resposta verdadeira, pois todos os outros esperam que o "sudo" funcione!Password:
então nada acontece. Não consigo digitar a senha.sudo
por padrão, lerá a senha do terminal conectado. Seu problema é que não há um terminal conectado quando ele é executado no console do netbeans. Então você tem que usar uma maneira alternativa de inserir a senha: isso é chamado de programa askpass .O programa askpass não é um programa específico, mas qualquer programa que possa solicitar uma senha. Por exemplo no meu sistema
x11-ssh-askpass
funciona bem.Para fazer isso, você precisa especificar qual programa usar, com a variável de ambiente
SUDO_ASKPASS
ou nosudo.conf
arquivo (consulteman sudo
para detalhes).Você pode forçar
sudo
a usar o programa askpass usando a opção-A
. Por padrão, ele será usado apenas se não houver um terminal conectado.fonte
-A
não leva argumentos.-A
requer ambienteSUDO_ASKPASS
ou umsudo.conf
arquivo. Nesse caso,ssh host "export SUDO_ASKPASS=askpass;sudo -A cat /etc/passwd"
seria ainda trabalho com um askpass base terminal, no entanto @chandru é muito mais concisa abaixo comssh -t ...
Para usuários do Ubuntu 16.04
Há um arquivo com o qual você precisa ler:
Colocando um arquivo com o modo 0440 em /etc/sudoers.d/myuser com o seguinte conteúdo:
Deve corrigir o problema.
Não esqueça de:
fonte
Tente este:
fonte
[sudo] password for alper: Sorry, try again. [sudo] password for alper: sudo: 1 incorrect password attempt
@sNICkerssssSe, por acaso, você veio aqui porque não pode sudo dentro do Ubuntu que acompanha o Windows10
Edite o arquivo / etc / hosts no Windows (com o Bloco de notas), ele estará localizado em:,
%localappdata\lxss\rootfs\etc
add127.0.0.1 WINDOWS8
, isso removerá o primeiro erro que não pode encontrar o host.Para se livrar do
no tty present
erro, sempre façasudo -S <command>
fonte
Entre no seu Linux. Dispare os seguintes comandos. Tenha cuidado, pois editar sudoer é uma proposta arriscada.
Quando o vi editor for aberto, faça as seguintes alterações:
Comentar
Defaults requiretty
Vá para o final do arquivo e adicione
fonte
Em Jenkins :
Por exemplo : -
Você pode usar o Mask Password Plugin para ocultar sua senha
fonte
Isso funcionou para mim:
onde seu usuário é "meu usuário"
para uma imagem do Docker, isso seria apenas:
fonte
Verifique se o comando que você está
sudo
inserindo faz parte do seuPATH
.Se você tiver uma
sudoers
entrada de comando única (ou múltipla, mas não ALL) , receberá asudo: no tty present and no askpass program specified
quando o comando não fizer parte do seu caminho (e o caminho completo não for especificado).Você pode corrigi-lo adicionando o comando ao seu
PATH
ou invocando-o com um caminho absoluto, ou seja,sudo /usr/sbin/ipset
Ao invés de
sudo ipset
fonte
sudoers
%sitd ALL=(lamparna) NOPASSWD: /usr/bin/git_push_to_lamparna.sh, /usr/bin/git
e usando osudo -u lamparna git push --mirror ssh://lamparna@REDMINE/home/lamparna/repos/git/jine/lamparna.git
retorno de gancho pós-atualização no gitno tty
, mas usando osudo -u lamparna /usr/bin/git push --mirror ssh://lamparna@REDMINE/home/lamparna/repos/git/jine/lamparna.git
trabalho sem senha.Comando
sudo
falha ao tentar solicitar a senha root e não há pseudo-tty alocado (como parte do script).Você precisa fazer login como root para executar este comando ou configurar as seguintes regras em seu
/etc/sudoers
(ousudo visudo
:):Em seguida, verifique se o usuário pertence ao
admin
grupo (ouwheel
).O ideal (mais seguro) seria limitar os privilégios de root apenas a comandos específicos que podem ser especificados como
%admin ALL=(ALL) NOPASSWD:/path/to/program
fonte
sudoers
arquivo,apache ALL = (ALL) NOPASSWD:/usr/share/apache-tomcat-7.0.61/bin/startup.sh
mas ele não funciona para mim. dá o seguinte errosudo: >>> /etc/sudoers: syntax error near line 120 <<< sudo: parse error in /etc/sudoers near line 120 sudo: no valid sudoers sources found, quitting sudo: unable to initialize policy plugin
apache ALL=(ALL) NOPASSWD: ALL
mas representa um risco à segurança. :)Acho que posso ajudar alguém com o meu caso.
Primeiro, alterei a configuração do usuário
/etc/sudoers
consultando a resposta acima. Mas ainda não funcionou.No meu caso,
myuser
estava nomygroup
.E eu não precisava de grupos. Então, excluiu essa linha.
(Não deve excluir essa linha como eu, apenas marcando o comentário.)
Funciona!
fonte
A execução de scripts shell que contenham comandos sudo nos jenkins pode não ser executada conforme o esperado. Para corrigir isso, siga
Passos simples:
Em sistemas baseados no ubuntu, execute "$ sudo visudo"
isso abrirá o arquivo / etc / sudoers.
Salve o arquivo
Relançar seu trabalho de Jenkins
você não deve ver essa mensagem de erro novamente :)
fonte
Consegui fazer isso, mas siga as etapas corretamente. Isso é para quem está recebendo erros de importação.
Etapa 1 : verifique se os arquivos e pastas têm problema de permissão de execução. Uso do usuário Linux:
Etapa 2 : verifique qual usuário tem permissão para executá-lo.
Etapa 3 : abra o terminal, digite este comando.
adicione estas linhas ao código abaixo
isso é para conceder permissão para executar o script e permitir que ele use todas as bibliotecas. O usuário geralmente é 'ninguém' ou 'www-data'.
Agora edite seu código como
vá para o terminal para verificar se o processo está em execução, digite isso aqui ...
isso produzirá todo o processo em execução no python.
Add Ons : use o código abaixo para verificar os usuários em seu sistema
Obrigado!
fonte
Este erro também pode ocorrer quando você está tentando executar um comando de terminal (que requer senha de root) de algum script não shell, por exemplo
sudo ls
(em backticks) de um programa Ruby. Nesse caso, você pode usar o utilitário Expect ( http://en.wikipedia.org/wiki/Expect ) ou suas alternativas.Por exemplo, no Ruby para executar
sudo ls
sem obtersudo: no tty present and no askpass program specified
, você pode executar o seguinte:[isso usa uma das alternativas à extensão Expect TCL: gem ruby_expect ].
fonte
Para referência, no caso de alguém encontrar o mesmo problema, eu fiquei preso durante uma boa hora com esse erro, o que não deveria acontecer, pois eu estava usando o parâmetro NOPASSWD.
O que eu NÃO sabia era que o sudo pode gerar exatamente a mesma mensagem de erro quando não há tty e o comando que o usuário tenta iniciar não faz parte do comando permitido no arquivo / etc / sudoers.
Aqui está um exemplo simplificado do conteúdo do meu arquivo com o meu problema:
Quando o bguser tentará iniciar "sudo command_b arg_b" sem nenhum tty (o bguser está sendo usado para algum daemon), ele encontrará o erro "no tty present e no askpass program especificado".
Por quê?
Como falta uma vírgula no final da linha no arquivo / etc / sudoers ...
(Eu até me pergunto se esse é um comportamento esperado e não um bug no sudo, pois a mensagem de erro correta para esse caso deve ser "Desculpe, o usuário bguser não tem permissão para executar etc.")
fonte
Eu estava recebendo esse erro porque limitava meu usuário a apenas um único 'systemctl' executável e configurara incorretamente o arquivo visudo.
Aqui está o que eu tinha:
No entanto, você precisa incluir o caminho completo para o executável, mesmo que esteja no seu caminho por padrão, por exemplo:
Isso permite que meu usuário jenkins reinicie os serviços, mas não tenha acesso root completo
fonte
Ninguém disse o que poderia causar esse erro, no caso de migração de um host para outro, lembre-se de verificar o nome do host no arquivo sudoers:
Portanto, esta é minha / etc / sudoers config
se não combinar
irá aparecer este erro:
fonte
Outras opções, não baseadas no NOPASSWD:
fonte
Talvez a pergunta não esteja clara: por que nenhuma resposta foi compatível, mas eu recebi a mesma mensagem de erro quando estava tentando montar sshfs que exigiam o sudo: o comando é algo como isto:
adicionando a opção
-o debug
Eu tive a mesma mensagem desta pergunta:
Então, lendo a resposta de outras pessoas, tornei-me criar um arquivo no
/etc/sudoer.d/user
my.server.tld com:e agora eu consigo montar a unidade sem dar muito direito extra ao meu usuário.
fonte
Embora essa pergunta seja antiga, ainda é relevante para o meu sistema mais ou menos atualizado. Após ativar o modo de depuração do sudo (
Debug sudo /var/log/sudo_debug all@info
in/etc/sudo.conf
), fui apontado para / dev: "/dev is world writable
". Portanto, pode ser necessário verificar as permissões do arquivo tty , especialmente aquelas do diretório em que o nó tty / pts reside.fonte
Se você adicionar esta linha ao seu
/etc/sudoers
(viavisudo
), ele resolverá o problema sem ter que desativar a digitação da senha e quando um alias parasudo -S
não funcionar (scripts chamandosudo
):É claro que você mesmo leu o manual para entendê-lo, mas acho que, para meu caso de uso, é executado em um contêiner LXD através do
lxc exec instance -- /bin/bash
seu bastante seguro, pois não está imprimindo a senha em uma rede.fonte
Usando pipeline:
Usando o documento aqui:
Abra um terminal para solicitar a senha (o que funcionar):
fonte
1 aberto / etc / sudoers
tipo
sudo vi /etc/sudoers
. Isso abrirá seu arquivo no modo de edição.2 Adicionar / modificar usuário linux
Procure a entrada para usuário do Linux. Modifique como abaixo se encontrado ou adicione uma nova linha.
3 Salvar e sair do modo de edição
fonte