如何在Mac OS X shell脚本中授予管理员权限?

时间:2011-08-05 20:39:20

标签: shell terminal authorization admin

#!/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脚本执行正常,虽然它总是要求管理员授权 - 我如何跳过那部分,所以我不必处理触摸维纳?谢谢!

1 个答案:

答案 0 :(得分: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

第一行将 Hot Dog 应用程序设置为root。 第二行设置 setuid 位,该应用程序以其所属的用户身份运行,即使是由其他用户启动也是如此。

据我所知,Mac OS不允许在shell脚本上使用 setuid

但是,您应该注意,这会更改 Hot Dog 应用程序的权限,并且更改是永久性的。谁有权访问此应用程序并尝试运行它将以管理员权限运行它。如果您是这台计算机的唯一用户,那么您应该没问题,但如果这是一台多用户计算机,并且 Hot Dog 应用程序确实存在危险,那么您应该知道每个人都可以使用它

您可以通过定义自定义组来限制影响,例如 hotdog ,将自己置于此组中,然后使用:

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

第一行将文件的所有权设置为 root 用户和 hotdog 组。第二个允许所有者(root)和 hotdog 组中的任何人执行,而不允许其他人执行。它还设置 setuid 位,这意味着应用程序将以管理员权限运行,即使非管理员运行它也是如此。