我需要以root身份執行給定的命令,並使用Java執行sudo用戶。但是,我不確定我可以用來傳遞密碼的方法。有沒有辦法將密碼傳遞給終端?如何使用java運行時輸入密碼到sudo?
回答
你可以只下降西頭一起,創建一個shell腳本的suid root用戶,運行該網址。
chmod +s myscript && chown root myscript && chgrp root myscript
每當腳本調用時,它將以root身份運行。
您可以配置sudo來允許特定命令沒有密碼運行。這並不需要你知道密碼。
具有其中必須在某個階段明文程序root的密碼實際上是不太安全恕我直言。
通常sudo通過直接在終端上操作來讀取密碼。你應該在這裏使用sudo -S
。使用此選項時,它將嘗試從標準輸入中讀取密碼,然後可以通過在運行命令時從Runtime.exec()
創建的Process
獲得的OutputStream
發送該密碼。
但是,我需要在sudoers文件中禁用requiretty選項。 – 2012-03-21 07:26:54
,如果你在終端上創建一個腳本和(使用的Runtime.exec)
正如你們已經提到的,你可以使用sudo
僅如果您當前使用的配置在系統從Java調用它,它會更好一個可以運行sudo
。否則(一般情況下)你必須輸入密碼。
你必須輸入密碼,如果你想遠程計算機上運行命令,使用ssh
以及或遠程使用scp
複製文件。
一些命令可以接受的密碼作爲命令行的參數。例如,mysql
實用程序可以在開關-p
後接受密碼。其他一些命令更爲嚴格:它們不會在命令行中釋放密碼,甚至不允許您通過重定向進程標準輸入提供密碼。例子是ssh
和scp
。
,以確保你總是可以編程方式運行,需要輸入密碼的任何命令,唯一的辦法就是仿效終端。這是實用程序expect
。以它的手冊頁一看:http://linux.die.net/man/1/expect
我在過去使用expect
。它是一個腳本驅動的實用程序,可以在用戶使用終端時準確模擬用戶的行爲。我們使用ProcessBuilder
作爲常規外部進程從java運行期望腳本。
獲得從一臺機器到其他使用ssh或scp可以,如果你配置無密碼的SSH來完成。這是一種用於需要一起工作並由頭節點控制的機器羣集的方法。例如hadoop使用這種方法。
我需要使用ProcessBuilder來運行tcpdump。這是我如何做的:
visudo命令 myuser的ALL = NOPASSWD:/ usr/sbin目錄/ tcpdump的
然後我的命令從Java是,這是從myuser的運行: 在/ usr /斌/須藤的/ usr/sbin/tcpdump -i eth0端口8561 ...
- 1. 如何從java程序運行沒有密碼的sudo命令?
- 2. 如何通過sudo運行命令並通過ssh .net輸入密碼c#
- 3. 如何在使用subprocess.call時鍵入sudo密碼?
- 4. 使用apache commons-exec運行git clone:如何輸入密碼?
- 5. 如何執行cmd命令行提示輸入密碼時使用java
- 6. 使用sudo時提示用戶使用對話窗口輸入密碼
- 7. 如何在mac中無密碼運行Sudo代碼
- 8. 如何在運行vncserver時自動輸入密碼:1?
- 9. 如何使用root密碼從Java提供sudo?
- 10. Fabric運行bash腳本請求sudo密碼 - 如何發送此密碼
- 11. 如何在java中運行sudo poweroff
- 12. 如何使輸入字段同時輸入數字和密碼?
- 13. 如何在密碼字段中輸入時禁用'使用密碼:'?
- 14. 如何在輸入密碼錯誤時輸入用戶
- 15. 命令行提示輸入密碼,無法使用java eclipse發送密碼
- 16. Mac OSX:運行一個避免輸入sudo密碼並在執行結束時關閉終端的腳本
- 17. sudo作爲另一個用戶從標準輸入密碼
- 18. 使用sudo運行shell腳本時,
- 19. 如何使用eclipse IDE從java程序運行sudo命令?
- 20. 使用System.Diagnostics.Process輸入密碼
- 21. 使用sudo運行命令並進入根(sudo -i)並運行命令
- 22. 是否可以將用戶輸入隱藏爲「sudo」密碼輸入?
- 23. Java加密:Java Encription:javax.crypto.IllegalBlockSizeException:使用填充密碼進行解密時,輸入長度必須是8的倍數
- 24. C#如何運行cygwin scp並使用Process和StandardInputWriter輸入密碼?
- 25. Monodevelop - 僅使用sudo運行
- 26. Java - 如何使程序運行直到輸入特定值
- 27. 如何在不輸入密碼的情況下運行Fabric任意的sudo命令?
- 28. 如何在密碼輸入時將密碼轉換爲星號?
- 29. 爲什麼用戶vagrant在不輸入密碼的情況下執行「sudo su - 」?
- 30. 在運行csh腳本時讓python輸入密碼
這可能是有用的,但對我來說,我不會總是事先知道這是要通過sudo的執行腳本,因此不能設置sudoers文件對於要運行的每個腳本每次/ R配置sudo的。我假設我們在sudoers文件中設置該設置,對吧? – 2012-03-21 07:28:47
你可以讓用戶能夠運行任何東西,但這聽起來很危險。這允許一個受損系統運行任何事情,無論是否需要密碼,這都是一個壞主意。 – 2012-03-21 08:45:32