簡體   English   中英

Shell腳本調用sudo; 如何禁止密碼提示

[英]Shell script calls sudo; how do I suppress the password prompt

我正在編寫一個簡單的shell腳本來更改網絡硬件的mac地址。 其中一條線是:

sudo ifconfig eth0 hw ether 00:99:99:00:00:00

我的問題是sudo腳本提示輸入密碼。 有沒有辦法,我可以這樣做而不提示用戶輸入密碼???

最明確的是,如果您不介意為該特定用戶“免費使用”該特定命令:

基本上看我的另一個答案: Shell腳本 - Sudo權限隨着時間的推移而丟失

可能最簡單的事情是

myuser = NOPASSWD: /sbin/ifconfig

此外,你可以在同一個終端(tty / vty)上sudo一個任意命令, sudo將緩存一段時間的身份驗證(或直到sudo -k ),所以你可以啟動腳本,它將“記住”來自你之前的sudo調用。 我有時在使用sudo編寫管道時(在它們之前使用sudo true

echo "password" | sudo -S ifconfig eth0 hw ether 00:99:99:00:00:00

您需要一個sudo配置行,允許用戶在沒有密碼提示的情況下執行命令。

您可以為整個用戶禁用密碼提示(更危險,但如果您是桌面上的唯一用戶,則可能沒問題 - 不要在服務器上執行此操作):

yourusername  ALL=(ALL) NOPASSWD: ALL

或更嚴格,僅允許ifconfig命令:

yourusername  ALL= NOPASSWD: /sbin/ifconfig

見: man sudoersman sudo

http://ubuntuforums.org/showthread.php?t=1132821

http://www.linuxhelp.net/guides/sudo/

更安全的方法是:

sudo visudo -f sudoers

然后加

myuser ALL=NOPASSWD:/sbin/ifconfig

到出現的編輯器窗口。 完成后,使用:x退出

這是一個Zenity對話框,類似於Tman的評論,
雖然密碼沒有存儲在歷史記錄中...這可能是一個很好的選擇

#!/bin/bash
ENTRY=`zenity --password`
case $? in
0)
pw=$(echo $ENTRY | cut -d'|' -f1)
;;
1)
echo "Stop login.";;
-1)
echo "An unexpected error has occurred.";;
esac
TMP=$(echo "${pw}" | sudo -Sv)
TMP=0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM