I had already asked this question in [Stack Overflow](https://stackoverflow.com/questions/18233511/sudo-sorry-you-must-have-a-tty-to-run-sudo), but I've been asked to post it here. So doing the same.

I ran this command using my java program-

```
sudo -u <username> -S pwd

```

I got this output-

```
command=sudo -u <username> -S pwd
exitCode=1
sudo: sorry, you must have a tty to run sudo

```

I tried editing /etc/sudoers but it already contains

```
<username>       ALL=(ALL)       NOPASSWD: ALL

```

Then, I learned that this can be done by commenting out the following code in /etc/sudoers

```
# Defaults requiretty

```

Also, by default, when attempting to execute a command as another user using `sudo`, we have to provide our own password. But this can be changed by making the following change in /etc/sudoers-

```
Defaults targetpw

```

My Question is, **is it possible to execute my above command in java without making any changes anywhere i.e. by having default settings**?