2016-02-26 105 views
0

我想在終端中運行「sudo rm ing/tmp/instruments_sock」。我通過使用robotil jar的代碼來做到這一點。但我無法輸入密碼。有沒有什麼辦法可以在mac上不要求輸入密碼的情況下運行這個命令! 我想僅爲此命令移除密碼。如何在mac中無密碼運行Sudo代碼

+0

好吧,我只是谷歌「MAC須藤沒有密碼」,它給我造成的。如果你想我可以在這裏複製粘貼步驟... –

+0

@AlexanderB。最好不要,OP也可以谷歌 - 這表明OP沒有做任何研究。更重要的是 - 這不是一個編程問題,它是關於StackOverflow的主題,OP應該在超級用戶中查看是否有人已經回答了這個問題。 –

+0

@ErwinBolwidt,我同意,基本上我的評論是一個提示和搜索的東西。 –

回答

2

如果你想執行一個沒有密碼的特權任務,最好的方法是使用一個setuid二進制。

總之,你做了一個小程序,做你想做的。然後通過將其所有者設置爲root並啓用setuid位來賦予程序root權限。

一個非常重要的警告:不要只在您的setuid二進制文件中調用system("rm /tmp/something")!這是一個經典的安全漏洞。不潔淨的環境變量(例如PATH)可以劫持該命令。上面的維基百科鏈接中有一個簡短的安全問題介紹。

而不是使用system(),最簡單和最安全的方法是使用該語言自己的文件處理庫。如果您不是100%確定自己在做什麼,請避免從二進制文件運行shell命令。

+2

也許指出你用'sudo chmod u + s YourScript'設置'setuid'位,並且用'sudo chown root YourScript'將它的所有者設置爲root。 –

-1

添加以下行使用sudo的/ etc/sudoers文件你都設置:

# %wheel ALL=(ALL) NOPASSWD: ALL 


dscl . append /Groups/wheel GroupMembership your_username 
+0

第一行不是命令,這就是需要添加到'/ etc/sudoers'文件而沒有'#'的地方。這也將消除每個命令的密碼需求,而不僅僅是問題中提到的單個命令。 – Jimi