在Linux中,如何在需要sudo的命令鏈中輸入其中一個命令的密碼。我能想到的一個例子是,在運行長時間的編譯工作之後,我想關閉機器。在命令鏈中輸入sudo命令的密碼
make ; sudo init 0
我想shutdown命令之後才運行make完成,但想輸入密碼馬上,因爲我不會在那裏當第一個命令完成。另外,我不想用超級用戶權限運行「make」。所以切換到root並運行命令也是不可能的。
謝謝!
在Linux中,如何在需要sudo的命令鏈中輸入其中一個命令的密碼。我能想到的一個例子是,在運行長時間的編譯工作之後,我想關閉機器。在命令鏈中輸入sudo命令的密碼
make ; sudo init 0
我想shutdown命令之後才運行make完成,但想輸入密碼馬上,因爲我不會在那裏當第一個命令完成。另外,我不想用超級用戶權限運行「make」。所以切換到root並運行命令也是不可能的。
謝謝!
sudo sh -c "su -c 'make' $USER && init 0"
提前和經常更改您的uid。這是芝加哥的方式!
將sudo的超時更改爲足夠長的時間以覆蓋您的使用情況,然後運行諸如sudo echo
之類的操作來進行身份驗證,然後運行其他命令。只要密碼超時還沒有達到,它應該執行而不再詢問。
您可以添加到您的sudoers文件
username ALL = NOPASSWD: /sbin/init
其中username是要允許的用戶名。
作品,但用戶的sideeffect被執行'須藤的init 0'隨時隨地,無需密碼(而這個問題確實需要的權限之後褪色)......不要離開你的終端之後無人看管。 – Konerak 2011-05-20 06:18:59
是一種不安全的解決方案,但大多數發行版都允許用戶通過GUI關閉/重新啓動。 – freethinker 2011-05-20 06:29:56
一種可能性是使用Expect 來自動輸入密碼。
這裏有一個簡單的HOW-TO的期望和密碼:http://www.linux.com/archive/feed/56066
另一種可能性是編輯/ etc/sudoers文件和設置您的用戶能夠使用sudo沒有密碼。如果您檢查該文件,它將在那裏的評論中解釋。
您可以運行sudo -v
更新sudo
時間戳 - 這意味着你將不再需要爲X分鐘輸入密碼(默認值爲5)。您可以通過編輯sudoers文件中的timestamp_timeout
來更改超時。
您也可能希望將命令改爲
make && sudo init 0
其中如果make成功完成纔會關閉。
爲什麼不將密碼輸入sudo
?
make; echo 'password' | sudo -S init 0
+1,這是我需要做的:'System.exec(「make; echo'password'| sudo -S init 6」);'' – YumYumYum 2012-10-11 21:24:42
這是上面的命令嗎?你以超級用戶身份運行一個shell,但是在其中,「su」命令作爲當前用戶運行「make」,之後「init 0」以超級用戶身份運行。 – Rohit 2011-05-20 08:50:18
@羅依特:是的,這正是它所做的。請注意使用雙引號,以便在更改uid之前在外殼的上下文中解釋$ USER。而且,超級用戶可以運行su而無需提供密碼。 – 2011-05-20 18:01:41