[英]Run a script from root and it calls another script that was in the sudo oracle. how to do that without asking the password of the oracle
[英]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 sudoers
, man 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.