我正在尝试设计一个脚本来打开一个应用程序,然后我将添加一个登录钩子,这样当用户登录时,登录钩子将以 root 身份运行该脚本,然后以 root 身份启动该应用程序。我根本没有编写脚本的经验,也尝试过其他脚本的一些示例,但毫无效果。任何帮助都将不胜感激。
编辑。我正在运行 OS X 10.6.4
答案1
如果是图形登录,则将应用程序链接到 ~root/Desktop/Autostart/。如果是 shell 登录,您可以将命令放入 ~/.login 中,它将被调用。但这样做通常很危险,请确保您考虑如何停止程序,当用户(root)多次登录时会发生什么,等等。
答案2
你可以让 shell 脚本设置为 setuid(这样它就会一直以文件所有者的身份运行,也就是 root),但这样做非常危险。使 shell 脚本 setuid 的安全隐患。
该脚本看起来是这样的:
#!/bin/sh -
open /Applications/Whatever.app
现在从终端使脚本 setuid:
sudo chown root file.sh
sudo chmod 4755 file.sh
第一个命令使 root 成为文件的所有者。第二个命令将其设置为 setuid,由其所有者读取/写入/执行,并由其他所有人读取/执行。
然后在 Mac OS X 中,转到系统偏好设置 → 帐户,并将 shell 脚本添加为用户的登录项。现在,每次用户登录时,都会调用该脚本,并且由于它是 setuid,因此它应该以 root 身份运行。