簡體   English   中英

Sudo Java調用C應用程序和權限

[英]Sudo Java calling C app and Permissions

我正在從Java應用程序調用C應用程序(僅控制台)。 我用以下方法調用它:Process proc = rt.exec(“ ./ Debug / CPP_CL --device 0”); CPP_CL需要訪問clinfo()硬件。因此,GPU硬件將作為其在GPU上的處理方式。 因此,在這種情況下,需要以sudo / root身份運行。

目前一切正常,但僅當我將Java JAR作為sudo運行時。 當前僅用於測試 CPG的是chmod 777(我知道不好)。

我想知道什么是最好的方法? 如果由SUDO java調用,CPP是否將以SUDO運行? 還是需要更改? 如果是這樣,最好的chmod值是多少?

謝謝。

正如您所說,以root身份運行Java是一種可能,但並非完全正確。

通常的chmod標志(rwx)也無法幫助您。

只需使用sudo調用就無法解決任何問題。 通常,需要輸入密碼,如果Java程序可以輸入密碼(即,它知道root密碼)……那么,再次與上述相同。

如評論中所述,您可以向sudo添加一個例外,但有一些問題:
您只能指定一個程序/腳本文件,而沒有參數限制。 您將需要一個腳本文件,該腳本文件調用./Debug/CPP_CL --device 0 (具有完整路徑),並將批處理文件添加為例外。
此外,您必須確保腳本文件不能被用戶修改(文件的chmod)並且不能被刪除(包含目錄的chmod)。 文件修改意味着修改后的用戶可以在其中放入任何文件,然后以root用戶身份運行它,而刪除將使該用戶在該文件中放置另一個名稱相同的文件。 鑒於此,您可以使用sudo進行調用。

如果您是wnat而不使用sudo來調用它,請制作另一個僅使用sudo調用文件1的腳本文件。

另一種可能性是程序本身上的特殊chmod標志SUID(如果您的發行版中已啟用/支持它)。 但是同樣,您不能限制參數。

關於數據文件:由根程序創建的文件將歸root擁有。 chmod / chown作為root可以改變這一點。 如果只需要讀取文件,則默認的umask將允許在許多系統上使用(如果文件位於/ root等非唯一的根目錄中)

回答:

https://unix.stackexchange.com/questions/18830/how-to-run-a-specific-program-as-root-without-a-password-prompt

這個工作..我能夠從Java進行sudo,並且上面沒有該應用程序需要的PWD。

暫無
暫無

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

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