Sudo: Difference between revisions
→sudo: sorry, you must have a tty to run sudo: WP content http://leo.steamr.com/2011/05/sudo-sorry-you-must-have-a-tty-to-run-sudo/ |
m →sudo: no tty present and no askpass program specified: formatting |
||
| Line 65: | Line 65: | ||
=== sudo: no tty present and no askpass program specified === | === sudo: no tty present and no askpass program specified === | ||
If you get {{highlight|lang=text|code= | |||
sudo: no tty present and no askpass program specified | |||
}} | |||
Make sure you have {{code|NOPASSWD}} set in your {{code|/etc/sudoers}} file. | |||
Eg. The files should have a line like: | Eg. The files should have a line like: | ||
{{highlight|lang=text|code= | |||
<USER> <host>=NOPASSWD:<command> | |||
}} | |||
{{Navbox Linux}}[[Category:Linux]] | {{Navbox Linux}}[[Category:Linux]] | ||
Revision as of 03:37, 12 September 2019
Overview
In a nutshell, sudo permissions are defined in /etc/sudoers and /etc/sudoers.d/. Permissions are defined like so:
%groupname workstation=/bin/command
username workstation=/bin/command
username workstation=(run-as user) /bin/command
Replace any of the above with ALL to have it match anyone. eg:
ALL ALL=ALL
You can use NOPASSWD: /bin/command to have it not prompt for the user's password.
You can verify whether your changes worked by listing sudo access:
# sudo -l
Configure sudo to include /etc/sudoers.d/
Additional sudo configs can be placed in /etc/sudoers.d/. Files placed here must have the permissions set to 0440.
For example:
# cd /etc/sudoers.d
# echo "gandalf ALL=(root) NOPASSWD: /usr/sbin/dmidecode" > run_dmidecode
# chmod 0440 run_dmidecode
Ensure the #includedir directive is defined in /etc/sudoers.
Troubleshooting
sudo: sorry, you must have a tty to run sudo
If you get the error while trying to run sudo through a script or a non-interactive shell:
sudo: sorry, you must have a tty to run sudo
Ensure that you do not require a TTY in your /etc/sudoers configuration. Either comment out or use !requiretty.
## In /etc/sudoers
## From
Defaults requiretty
## To one of:
Defaults !requiretty
# Defaults requiretty
A one-liner to fix this:
# sed -i s'/Defaults requiretty/#Defaults requiretty'/g /etc/sudoers
As a side note, if you just want to run a command as another user, you could also try su instead. For example:
# su $username -c 'whoami'
sudo: no tty present and no askpass program specified
If you get
sudo: no tty present and no askpass program specified
Make sure you have NOPASSWD set in your /etc/sudoers file.
Eg. The files should have a line like:
<USER> <host>=NOPASSWD:<command>