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