Errore "sudo: no tty present and no askpass program specified" su RHEL7

Ciao mte90

mi fa piacere essermi registrato a questo Forum; ho letto che per un problema riguardo la categoria sull’Assistenza per Linux devo rivolgermi a te.

Non so se è qui che devo entrare nel dettaglio, ma in pratica ho un problema di esecuzione di comandi Linux (su di una macchina virtuale remota RHEL 7) da eseguire con un’utenza registrata su tale macchina; tale utenza (username alfa) è inserita nel file sudoers in modo che possa divenire, tramite la direttiva sudo su, un’altra utenza (username beta, anch’essa registrata su tale macchina) e senza che debba essere immessa la password dell’utente beta, potendo, quest’ultima utenza, eseguire specifici comandi Linux la cui lista è sempre impostata nel file sudoers.

In pratica, supponendo di essere l’utente alfa si deve poter eseguire il comando seguente (immaginando ad es. di eseguire il comando ls -l)

sudo su - beta -c "ls -l"

tutto il suddetto comando non viene lanciato da terminale, bensì da una classe Java come processo (tale classe Java è parte di una web application deployata su un server JBoss installato sempre sulla stessa macchina RHEL 7), e l’output del comando, sia esso eseguito con successo o con errore, viene trascritto in un file log; in esso ottengo sempre il risultato seguente

sudo: no tty present and no askpass program specified

ho cercato in rete soluzioni al riguardo, fra cui inserire nel file sudoers, come ultima istruzione

alfa ALL = NOPASSWD: /bin/su

ma ottengo sempre lo stesso errore.
Trascrivo qui di seguito le altre direttive inserite nel file sudoers

Runas_Alias OP = beta
Runas_Alias APACHE = apache

User_Alias USEREXEC = userexec

Cmnd_Alias CMDBSH = /bin/tar, /bin/mv, /bin/cp, /bin/rm, /bin/ls, /bin/vi, /usr/bin/cvs, /bin/grep, /usr/bin/find, /usr/bin/tail, /bin/cat, /bin/more, /usr/bin/unzip, /usr/bin/7za, /usr/bin/wc, /bin/touch, /usr/bin/less
Cmnd_Alias CMDREP = /var/www/html/cma/scripts/admin_one_repository.sh, /var/www/html/cma/scripts/deletefolders

USEREXEC ALL =(OP) NOPASSWD: CMDBSH 
USEREXEC ALL =(APACHE) NOPASSWD: CMDBSH, CMDREP

root	ALL=(ALL) ALL

alfa ALL= NOPASSWD:/bin/su
USEREXEC ALL = (OP) NOPASSWD: CMDBSH

Ringrazio anticipatamente te e chiunque possa contribuire a darmi una soluzione.

Grazie

Mhm in realtà non è così: possono rispondere tutti e non c’è bisogno di rivolgersi a una singola persona.

Come moderatore ti ho spostato il messaggio in una discussione a parte. Non c’era bisogno di rispondere al post di mte90…

Sei sicuro che il programma java/jboss sta lanciando il comando come alpha, e non tipo un’utenza specifica come www?

Hai provato a vedere questa soluzione e quindi aggiungere -S a 'sudo`?

Hai provato? con

alfa ALL = (beta) NOPASSWD: /bin/su

( How do I run specific sudo commands without a password? - Ask Ubuntu )

Ciao amreo

la soluzione che mi hai indicato l’avevo già vista e provata, con anche l’opzione -S, ma non ha sortito l’effetto sperato.

Mi era sorto anche il dubbio che l’intero comando venisse eseguito come utenza www, ma provandolo in locale sul mio pc in cui c’è l’ambiente di sviluppo, mi appare l’utente alfa (dentro la classe Java ho chiamato direttamente il comando whoami e non sudo su - beta -c “whoami” e a video mi è uscito proprio alfa e non www).

Proverò con la direttiva

alfa ALL = (beta) NOPASSWD: /bin/su

Grazie per la tempestiva risposta :+1:

Buondì amreo

ho provato anche con

alfa ALL = (beta) NOPASSWD: /bin/su

ma non ha funzionato. Però forse mi sta venendo il dubbio che in effetti il messaggio presentato possa essere legato al tipo di utente che lancia il comando, che potrebbe non essere l’utente alfa.

Eseguirò prove in tal senso e poi farò sapere.

Grazie

Ciao amreo

ho fatto eseguire alcuni comandi sul server di esercizio per il cui problema ho aperto questo questo argomento; controllando bene, il comando veniva in effetti eseguito con un’utenza diversa da alfa e beta, detta jboss; ho pertanto provveduto nel file sudoers a inserire la direttiva

alfa, jboss ALL = NOPASSWD: /bin/su

e ora i comandi vengono eseguiti e prospettato l’output sul file log.

Grazie per il prezioso aiuto.

Ho marcato la tua risposta come soluzione: devo anteporre la parola RISOLTO al titolo dell’argomento?

Ciao

No, non ce ne è bisogno

Questo argomento è stato automaticamente chiuso dopo 179 giorni. Non sono permesse altre risposte.