解決Jenkins執行sudo命令時出現“sudo: no tty present and no askpass program specified”的錯誤
阿新 • • 發佈:2018-12-31
在Jenkins的使用過程中,如果在指令碼中使用到sudo命令,有可能出現如下所示的錯誤:
sudo: no tty present and no askpass program specified
這是因為Jenkins伺服器在執行sudo命令時的上下文有誤,導致這個命令執行的異常。
解決方案:
- 在Jenkins宿主伺服器上執行如下命令
$ sudo visudo
- 在檔案的末尾加上一行
jenkins ALL=(ALL) NOPASSWD: ALL
- 儲存檔案(注意儲存的時候修改檔名,檔名字尾不要加上預設的.tmp,即可覆蓋原檔案)
Ctrl+O
- 退出編輯
Ctrl+X
- 重啟Jenkins服務
$ /etc/init.d/jenkins restart
最後,重新執行構建任務,不會出現先前的錯誤。
PS:如果誤操作修改了/etc/sudoers的許可權來修改上述檔案,則會導致如下所示的錯誤:
sudo :/etc/sudoers is world writable
sudo : no valid sudoers source found, quitting
sudo : unable to initialize poling plugin
這是Linux的一種保護機制。因此,如果出現上述誤操作,則需要執行如下命令來解決:
$ pkexec chmod 0440 /etc/sudoers