如何讓 sudo 自動接受密碼而不提示輸入?

如何讓 sudo 自動接受密碼而不提示輸入?

我建立了一個名為 shutdown 的用戶,這樣每當有人使用該用戶名登入時,機器就會關閉。為此,我將以下命令放在 .profile 的末尾。

exec sudo shutdown -h now

但這並沒有達到目的。當使用者關閉登入時,而不是機器關閉時,登入畫面將會返回。因此,用戶無法登錄,但同時又回到相同的登入畫面。

我覺得的原因是因為沒有提供用戶關閉的密碼,所以機器沒有關閉。由於 exec,登入畫面又回來了(這很好)。

現在為了解決我的工作,我需要一種方法,以便在執行上述 sudo 命令時自動取得我的密碼。我查了一下man sudo,我認為-A必須使用選項。

按照該手冊頁,我跑了

SUDO_ASKPASS=/home/ravbholua/pass.txt

export SUDO_ASKPASS

然後為了檢查它是否有效,我跑了

ravbholua@ravbholua-Aspire-5315:~$ sudo -A pwd

sudo: unable to run /home/ravbholua/pass.txt: Permission denied

從這個輸出來看,這意味著這個路徑檔案必須運行並將我的密碼作為輸出提供給 sudo。我之前想到的是,它會從這個名為 pass.txt 的檔案中取得密碼,所以我在這個檔案中輸入了我的密碼。但不是!

有什麼建議請!

答案1

SUDO_ASKPASS 應該是提示使用者輸入密碼的二進位。其用途的範例是在 GUI 中彈出一個窗口,要求使用者在使用 GUI 程式時輸入密碼。手冊頁有以下內容:

如果沒有可用終端機或指定了 -A 選項,則指定用於讀取密碼的幫助程式的路徑。

要執行您想要的操作,您可能需要編輯 /etc/sudoers 檔案以允許「shut」使用者能夠在不指定密碼的情況下執行關閉。下面的行允許「shut」使用者在「ALL」電腦上執行「/sbin/shutdown -h now」和「/sbin/shutdown -r now」。

關閉全部 = NOPASSWD:/sbin/shutdown -h now,/sbin/shutdown -r now

一個更不安全的選項是使用 sudo 的“-S”選項從 stdin 讀取密碼並將密碼回顯給它,如下所示:

回顯“密碼”| sudo -S shutdown -h 現在

相關內容