Avevo già posto questa domanda in Stack Overflow , ma mi è stato chiesto di pubblicarla qui. Quindi fare lo stesso.
Ho eseguito questo comando usando il mio programma Java
sudo -u <username> -S pwd
Ho ottenuto questo risultato
command=sudo -u <username> -S pwd
exitCode=1
sudo: sorry, you must have a tty to run sudo
Ho provato a modificare / etc / sudoers ma contiene già
<username> ALL=(ALL) NOPASSWD: ALL
Poi, ho imparato che questo può essere fatto commentando il seguente codice in / etc / sudoers
# Defaults requiretty
Inoltre, per impostazione predefinita, quando si tenta di eseguire un comando come un altro utente che utilizza sudo
, è necessario fornire la propria password. Ma questo può essere modificato apportando la seguente modifica in / etc / sudoers-
Defaults targetpw
La mia domanda è: è possibile eseguire il comando precedente in java senza apportare alcuna modifica ovunque, ad esempio avendo le impostazioni predefinite ?
requiretty
è abilitato per impostazione predefinita. Secondo sudo
la propria documentazione , è "spento di default".