Estoy tratando de compilar algunas fuentes usando un archivo MAKE. En el archivo MAKE hay un montón de comandos que deben ejecutarse como sudo
.
Cuando compilo las fuentes desde un terminal, todo va bien y la marca se detiene la primera vez que sudo
se ejecuta un comando esperando la contraseña. Una vez que escribo la contraseña, se reanuda y completa.
Pero me gustaría poder compilar las fuentes en NetBeans. Entonces, comencé un proyecto y mostré a netbeans dónde encontrar las fuentes, pero cuando compilo el proyecto me da el error:
sudo: no tty present and no askpass program specified
La primera vez que golpea un sudo
comando.
He buscado el problema en Internet y todas las soluciones que encontré apuntan a una cosa: deshabilitar la contraseña para este usuario. Dado que el usuario en cuestión aquí es root. No quiero hacer eso
hay alguna otra solucion?
sudo -n my-command
funcionó para mí. HIH!sudo: a password is required
Respuestas:
Otorgar al usuario el uso de ese comando sin solicitar una contraseña debería resolver el problema. Primero abra una consola shell y escriba:
Luego edite ese archivo para agregarlo al final:
p.ej
permitirá al usuario
john
sudopoweroff
,start
ystop
sin que se le solicite la contraseña.Mire en la parte inferior de la pantalla las pulsaciones de teclas que necesita usar en visudo, por cierto, esto no es vi, y salga sin guardar a la primera señal de cualquier problema. Advertencia de salud: corromper este archivo tendrá graves consecuencias, edite con cuidado.
fuente
Tratar:
Use la
NOPASSWD
línea para todos los comandos, quiero decir:Ponga la línea después de todas las otras líneas en el
sudoers
archivo.Eso funcionó para mí (Ubuntu 14.04).
fuente
jenkins ALL=(ALL) NOPASSWD: /var/lib/jenkins/wrapper_script
jenkins
es solo un nombre de usuario? ¿Debe ser el nombre de usuario del usuario de la máquina host? ¿Qué sucede si el nombre de usuario en la máquina host coincide con el nombre de usuario del servidor remoto?Tratar:
Esto eliminará los errores anteriores.
fuente
-t Force pseudo-tty allocation. This can be used to execute arbitrary screen-based programs on a remote machine
vea también: sudo-no-tty-present-and-no-askpass-program-especificado Tambiénsudo -A
permite configurar unsudo
programa askpass, pero solo veo GUI. ¿Alguien sabe un askpass para permitirssh remotehost sudo -A askpass
?-A
forsudo
no toma argumentos y en su lugar requiere un entornoSUDO_ASKPASS
o unsudo.conf
Sossh remotehost sudo -A command
todavía funcionaría. Todavía tengo curiosidad sobre un programa askpass basado en terminal.Pseudo-terminal will not be allocated because stdin is not a terminal.
:(Después de todas las alternativas, encontré:
Fuente
El comando anterior aún necesita ingresar la contraseña. Para eliminar la contraseña ingresada manualmente, en casos como jenkins, este comando funciona:
fuente
sudo -S <command>
-true
resulta ser un comando ficticio que devuelve un código de salida de 0 (false
es un comando que devuelve 1). Gracias, esta es la única respuesta verdadera, ya que todos los demás esperan que "sudo" funcione.Password:
entonces no pasa nada. No puedo escribir la contraseña.sudo
de forma predeterminada, leerá la contraseña del terminal conectado. Su problema es que no hay una terminal conectada cuando se ejecuta desde la consola de netbeans. Por lo tanto, debe utilizar una forma alternativa de ingresar la contraseña: el programa askpass .El programa askpass no es un programa en particular, sino cualquier programa que pueda solicitar una contraseña. Por ejemplo en mi sistema
x11-ssh-askpass
funciona bien.Para hacerlo, debe especificar qué programa utilizar, ya sea con la variable de entorno
SUDO_ASKPASS
o en elsudo.conf
archivo (consulteman sudo
detalles).Puede forzar
sudo
a utilizar el programa askpass mediante el uso de la opción-A
. Por defecto, lo usará solo si no hay un terminal conectado.fuente
-A
no toma argumentos.-A
requiere entornoSUDO_ASKPASS
o unsudo.conf
archivo. En ese caso,ssh host "export SUDO_ASKPASS=askpass;sudo -A cat /etc/passwd"
todavía funcionaría con un askpass basado en terminal, sin embargo, @chandru es mucho más conciso a continuación conssh -t ...
Para usuarios de Ubuntu 16.04
Hay un archivo con el que debes leer:
Colocando un archivo con modo 0440 en /etc/sudoers.d/myuser con el siguiente contenido:
Debería solucionar el problema.
No olvides:
fuente
Prueba este:
fuente
[sudo] password for alper: Sorry, try again. [sudo] password for alper: sudo: 1 incorrect password attempt
@sNICkerssssSi por casualidad viniste aquí porque no puedes sudo dentro del Ubuntu que viene con Windows10
Edite el archivo / etc / hosts desde Windows (con el Bloc de notas), se ubicará en:,
%localappdata\lxss\rootfs\etc
agregue127.0.0.1 WINDOWS8
, esto eliminará el primer error de que no puede encontrar el host.Para deshacerse del
no tty present
error, siempre hazsudo -S <command>
fuente
Inicie sesión en su Linux. Fuego siguiendo los comandos. Tenga cuidado, ya que editar sudoer es una propuesta arriesgada.
Una vez que se abra el editor vi, realice los siguientes cambios:
Comentar
Defaults requiretty
Ve al final del archivo y agrega
fuente
En Jenkins :
Por ejemplo : -
Puede usar el complemento de contraseña de máscara para ocultar su contraseña
fuente
Esto funcionó para mí:
donde su usuario es "myuser"
para una imagen de Docker, eso sería:
fuente
Asegúrate de que el comando que estás
sudo
usando sea parte de tuPATH
.Si tiene una
sudoers
entrada de comando único (o múltiple, pero no TODO) , obtendrá elsudo: no tty present and no askpass program specified
el comando cuando el comando no forma parte de su ruta (y la ruta completa no está especificada).Puede solucionarlo agregando el comando a su
PATH
o invocando con una ruta absoluta, es decirsudo /usr/sbin/ipset
En vez de
sudo ipset
fuente
sudoers
%sitd ALL=(lamparna) NOPASSWD: /usr/bin/git_push_to_lamparna.sh, /usr/bin/git
y usandosudo -u lamparna git push --mirror ssh://lamparna@REDMINE/home/lamparna/repos/git/jine/lamparna.git
en git post-update hook returnno tty
, pero usandosudo -u lamparna /usr/bin/git push --mirror ssh://lamparna@REDMINE/home/lamparna/repos/git/jine/lamparna.git
trabajo sin contraseña.El comando
sudo
falla ya que está intentando solicitar la contraseña de root y no hay pseudo-tty asignado (ya que es parte del script).Debe iniciar sesión como root para ejecutar este comando o configurar las siguientes reglas en su
/etc/sudoers
(o:)sudo visudo
:Luego, asegúrese de que su usuario pertenezca al
admin
grupo (owheel
).Idealmente (más seguro) sería limitar los privilegios de root solo a comandos específicos que se pueden especificar como
%admin ALL=(ALL) NOPASSWD:/path/to/program
fuente
sudoers
archivo,apache ALL = (ALL) NOPASSWD:/usr/share/apache-tomcat-7.0.61/bin/startup.sh
pero no me funciona. da el siguiente errorsudo: >>> /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
pero es un riesgo de seguridad. :)Creo que puedo ayudar a alguien con mi caso.
Primero, cambié la configuración del usuario en
/etc/sudoers
referencia a la respuesta anterior. Pero todavía no funcionó.En mi caso,
myuser
estaba en elmygroup
.Y no necesitaba grupos. Entonces, borré esa línea.
(No debería eliminar esa línea como yo, solo marcando el comentario).
¡Funciona!
fuente
La ejecución de scripts de shell que contienen comandos sudo en ellos desde jenkins podría no ejecutarse como se esperaba. Para solucionar esto, sigue
Pasos sencillos:
En sistemas basados en ubuntu, ejecute "$ sudo visudo"
esto abrirá el archivo / etc / sudoers.
guarda el archivo
Relanzar su trabajo de jenkins
no deberías ver ese mensaje de error otra vez :)
fuente
Pude hacerlo, pero asegúrese de seguir los pasos correctamente. Esto es para cualquiera que reciba errores de importación.
Paso 1 : Verifique si los archivos y las carpetas tienen un problema de permiso de ejecución. Uso de usuarios de Linux:
Paso 2 : Verifique qué usuario tiene permiso para ejecutarlo.
Paso 3 : abra la terminal, escriba este comando.
agregue estas líneas al código a continuación
esto es para otorgar permiso para ejecutar el script y permitirle usar todas las bibliotecas. El usuario generalmente es 'nadie' o 'www-data'.
ahora edite su código como
vaya a la terminal para verificar si el proceso se está ejecutando, escriba esto allí ...
Esto generará todo el proceso que se ejecuta en Python.
Agregar complementos : use el siguiente código para verificar los usuarios en su sistema
¡Gracias!
fuente
Este error también puede surgir cuando intentas ejecutar un comando de terminal (que requiere contraseña de root) desde algún script que no sea shell, por ejemplo
sudo ls
(en backticks) desde un programa Ruby. En este caso, puede usar la utilidad Expect ( http://en.wikipedia.org/wiki/Expect ) o sus alternativas.Por ejemplo, en Ruby para ejecutar
sudo ls
sin obtenersudo: no tty present and no askpass program specified
, puede ejecutar esto:[esto usa una de las alternativas a la extensión Expect TCL: ruby_expect gem].
fuente
Para la referencia, en caso de que alguien más encuentre el mismo problema, me quedé atrapado durante una buena hora con este error, lo que no debería suceder ya que estaba usando el parámetro NOPASSWD.
Lo que NO sabía es que sudo puede generar exactamente el mismo mensaje de error cuando no hay tty y el comando que el usuario intenta iniciar no forma parte del comando permitido en el archivo / etc / sudoers.
Aquí un ejemplo simplificado del contenido de mi archivo con mi problema:
Cuando bguser intente ejecutar "sudo command_b arg_b" sin ningún tty (bguser se está utilizando para algún demonio), entonces se encontrará con el error "no hay tty presente y ningún programa askpass especificado".
¿Por qué?
Debido a que falta una coma al final de la línea en el archivo / etc / sudoers ...
(Incluso me pregunto si este es un comportamiento esperado y no un error en sudo ya que el mensaje de error correcto para tal caso debería ser "Lo siento, el usuario bguser no tiene permitido ejecutar, etc.")
fuente
Recibí este error porque había limitado a mi usuario a un solo 'systemctl' ejecutable y había configurado mal el archivo visudo.
Esto es lo que tenía:
Sin embargo, debe incluir la ruta completa al ejecutable, incluso si está en su ruta de forma predeterminada, por ejemplo:
Esto permite que mi usuario jenkins reinicie los servicios pero no tenga acceso completo a la raíz
fuente
Nadie dijo qué podría causar este error, en caso de migración de un host a otro, recuerde verificar el nombre de host en el archivo sudoers:
Entonces esta es mi / etc / sudoers config
si no coincide
aparecerá este error:
fuente
Otras opciones, no basadas en NOPASSWD:
fuente
Tal vez la pregunta no está clara de por qué ninguna respuesta coincidía, pero tenía el mismo mensaje de error cuando intentaba montar sshfs que requería sudo: el comando es algo como esto:
agregando la opción
-o debug
Tenía el mismo mensaje de esta pregunta:
Entonces, al leer la respuesta de otros, me convertí en un archivo en
/etc/sudoer.d/user
my.server.tld con:y ahora puedo montar el disco sin darle demasiado derecho a mi usuario.
fuente
Aunque esta pregunta es antigua, sigue siendo relevante para mi sistema más o menos actualizado. Después de habilitar el modo de depuración de sudo (
Debug sudo /var/log/sudo_debug all@info
in/etc/sudo.conf
), me señalaron / dev: "/dev is world writable
". Por lo tanto, es posible que deba verificar los permisos del archivo tty , especialmente los del directorio donde reside el nodo tty / pts.fuente
1 abierto / etc / sudoers
tipo
sudo vi /etc/sudoers
. Esto abrirá su archivo en modo de edición.2 Agregar / Modificar usuario de Linux
Busque la entrada para el usuario de Linux. Modifique como se muestra a continuación si lo encuentra o agregue una nueva línea.
3 Guardar y salir del modo de edición
fuente
Si agrega esta línea a su
/etc/sudoers
(víavisudo
), solucionará este problema sin tener que deshabilitar el ingreso de su contraseña y cuandosudo -S
no funcione un alias para (scripts de llamadasudo
):Por supuesto, lea el manual usted mismo para comprenderlo, pero creo que, para mi caso de uso, es ejecutarlo en un contenedor LXD a través de
lxc exec instance -- /bin/bash
su bastante seguro, ya que no está imprimiendo la contraseña en una red.fuente
Usando tubería:
Usando el documento aquí:
Abra una terminal para pedir contraseña (lo que funcione):
fuente