一、supervisor使用sudo執行命令的時候,報錯php
二、解決辦法:linux
編輯 /etc/sudoers 文件,將Default requiretty註釋掉。
sudo vim /etc/sudoers
#Default requiretty #註釋掉 Default requiretty 一行
具體操做:vim
sudo sed -i ‘s/Defaults requiretty/#Defaults requiretty/g’ /etc/sudoers
sudo cat /etc/sudoers | grep requirettyssh
三、給ssh一個終端:加選項 -tui
sshpass -p 123456 ssh -t admin@8.8.8.8 sudo touch 123spa
容許wheel用戶組成員無密碼使用sudo:code
%wheel ALL=(ALL) NOPASSWD: ALL
容許admin用戶無密碼使用sudo:blog
admin ALL=(ALL) NOPASSWD: ALL
遠程執行命令時,SSH默認不會分配tty。沒有tty,sudo就沒法在獲取密碼時關閉回顯。使用-tt
選項強制SSH分配tty(使用兩次-tt
)。get
另外一方面,sudoers中的Defaults
選項requiretty
要求只有擁有tty的用戶才能使用sudo。能夠經過visudo
編輯配置文件,禁用這個選項:cmd
# Disable "ssh hostname sudo <cmd>", because it will show the password in clear text. # You have to run "ssh -t hostname sudo <cmd>". # # Defaults requiretty
參考:sudo的wiki手冊
https://wiki.archlinux.org/index.php/Sudo_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)