2011-08-05 129 views
1
#!/bin/sh 

# The following files are bundled: 
# 
# 'Wiener.dog' 
# 
# 

open -a /Applications/Hot\ Dog.app/Contents/MacOS/Hot Dog ~/Documents/Broiler\ Cooked/Wiener.dog 

shell腳本執行得很好,雖然它總是要求管理員授權 - 如何跳過該部分,所以我不必處理觸摸wiener?謝謝!如何在Mac OS X shell腳本中授予管理員權限?

回答

4

你可以嘗試設置setuid的,並更改文件的所有者爲root:

sudo chown root /Applications/Hot\ Dog.app/Contents/MacOS/Hot\ Dog 
sudu chmod 4755 /Applications/Hot\ Dog.app/Contents/MacOS/Hot\ Dog 

第一行設置的熱狗應用程序屬於根。 第二行設置setuid位,即使其他用戶啓動了應用程序,它也會以其所屬用戶的身份運行。

據我所知Mac OS不允許在shell腳本上使用setuid

但是,您應該注意,這會更改熱狗應用程序的權限,並且更改是永久性的。誰有權訪問此應用程序並嘗試運行它將以管理員權限運行它。如果你是這臺電腦的唯一用戶,你應該可以,但如果這是一個多用戶機器,並且應用程序確實有潛在危險,你應該知道每個人都可以使用它。

您可以通過定義自定義組衝擊漲停,說熱狗,把自己這一組中,並使用來代替:

sudo chown root:hotdog /Applications/Hot\ Dog.app/Contents/MacOS/Hot\ Dog 
sudu chmod 4750 /Applications/Hot\ Dog.app/Contents/MacOS/Hot\ Dog 

第一行設置文件的所有權轉讓給用戶和熱狗組。第二個允許所有者(根)和誰在熱狗組中執行,而不是其他人。它還設置setuid位,這意味着應用程序將以管理員權限運行,即使非管理員運行它。

+0

謝謝,我會試一試,雖然是權限更改永久或只是在腳本運行的生命週期? –

+0

更改是永久性的。我會用更多信息編輯我的帖子。 – vlad

+0

感謝您的簡要解釋,非常感謝。我試着改變setuid,它確實有效。定義一個自定義組的好主意 - 我絕對總是厭倦給予任何root權限;這是一個很大的禁忌。再次感謝! ;-) –

相關問題