对于初接触的人的确有点不太好入手,下面讲得具体些,但无法涉及过多的原理和解释,建议把前面和这里说的参考资料研读下,有助于理解这里所说的。
脚本保存
不要每个用户一个,就用一个,保存在公用区域,并设置所有人都可读+可执行。这个公共区域可以选择的地方有好多,比如,两个常见的目录:"/Users/Shared" 或者 "/Library/Application Support/"。当然,最好是在这些系统自带的目录中再创建一个自己的子目录,把管理用的脚本和其它资源文件都放在里面,便于管理。owner最好是root,以免他人随意改动。
比如,在"/Library/Application Support/"中的设置:mngmtFolder="/Library/Application Support/yourcompanyname/"
sudo mkdir -p "$mngmtFolder"
sudo chown root:staff "$mngmtFolder"
sudo chmod -R 755 "$mngmtFolder"
测试再测试
不要急于考虑自动运行的问题,先确认脚本运行正常,多用户、多网路环境、多极端情况下的测试,把脚本完善好。尤其是,运行过程中自动记录logs,这样有助于排错和追踪。
自动运行测试,先在一个测试帐户中测试。
自动运行:
你需要的是用户登陆运行(Agent),而不是开机运行(Daemon),两者有“本质”区别。
详细的资料,除了前面提到的在线man和我的书,还可以参考Apple的官方文档:Creating Launch Daemons and Agents
因为你需要所有用户登陆时都自动运行,所以,我们需要访问“/Library/LaunchAgents/”目录。
先把下面的文本,修改必要的参数,比如yourcopanyname 和 脚本的目录和名称等,保存为一个纯文本文件,取名为“.plist”文件,比如:“com.yourcompany.mountsmb.plist”,保存在/Library/LaunchAgents/目录中。
Label
com.yourcompany.mountsmb
ProgramArguments
/Library/Application Support/yourcompanyname/mountsmb.sh
RunAtLoad
KeepAlive
这样,下面的命令,应该能看到该文件的存在:$ ls -la /Library/LaunchAgents/
-rw-r--r-- 1 root wheel 439 31 Jul 13:08 com.yourcompany.mountsmb.plist
需要注意的是:这个plist文件的owner必须是root,权限则为:644,如上所示
注意事项
最好建立一个备用的管理员帐户,以备万一
如果遇到问题造成登陆问题,启动到安全模式。
由于launchd的工作原理,用户无法设定运行时机,登陆之后,可能需要等待一段时间,让launchd决定合适运行它。所以,logs在排错等时很重要。
望能顺利设置成功