注: 本文是基于TJ Royall的文章
login script to hide applications from certain OD users改变的.
首先, 在一个企业环境中, 不同的用户组可以被允许的程序可以是不同的, 但是一般来说, 所有登录到一台机器的用户都有对/Applications目录的read权限,所以, 只要是被安装在/Applications(包括Utility,Server等子目录)里面的应用程序, 登录的用户就可以看见. 这样, 在有的企业环境中, 一些用户就会产生:"为什么我不能运行这个程序呢?是不是管理员的失误呢?", "听说这个聊天程序挺好, 也在硬盘上, 问问管理员是否可以让我玩玩."等等这样的出于好奇等原因的问题, 这样既对一线用户的工作效率产生负面影响, 同时管理员也会面对这样的众多询问, 从要要花时间检查用户的设置情况等, 浪费大量时间.
另外, 即便不是中大型的网络管理企业用户, 在一个未实施网络管理的松散管理中, 管理人员或者应用实施人员, 也可以通过下面的思路来做一些工作, 减少没必要的管理时间浪费.
基本思路是这样, 通过用户的组设置的不同, 可以给定禁止用户使用应用程序的列表, 在用户每次登录系统的时候, 运行一个script程序来隐藏禁止使用的程序, 而当用户退出系统的时候样释放列表中的程序, 这样就可以通过维护列表来管理用户可以看见的应用程序了.
这样涉及到两个scripts程序, 一个是login script, 一个是logout script.
Royall原来的文章中没有涉及logout script,他使用的方法在一个比较大型的系统中产生登录很慢的抱怨, 而且使用的方法只是一个框架而已.
这里使用网络www服务, 来管理用户组的应用程序列表, 因为www服务可以说从Windows到Linux, Unix, BSD等等当今主流系统都有免费而功能强大的www服务器, 我们这里只使用其中的最简单的功能.在服务器上存放不同组的被禁止的应用程序的列表, 并根据组名分别存放到不同文件. 只要是通过普通的browser可以看到这些文件, script就可正常存取, 在下面的script里面只要是修改服务器的地址就可以了.
- #1.Createalogfile
- LOG="/tmp/hideapps.log"
-
- #2.PathtotheSetFileBinaryfromDeveloperTools.
- SETFILE="/usr/local/bin/SetFile"
- #3.Pathtothefolderwithapplicationswewanttohide.
- APP_PATH="/Applications"#yourpathhere
- #4.WeneedtogettheMCXworkgroupsowecanhidetherightapps.
- WORKGROUP=`defaultsread/Library/Managed/Preferences/$1/com.apple.MCXworkgroup`
-
- #5.Setfilenameforhiddenfilelist.
- hiddenfilelist="/tmp/hiddenfilelist.txt"
-
- #6.Sethiddenappsforeachworkgroup.Sampleapplicationnamesareincluded.
- #.Besuretoincludethe.appaftertheapplicationname.
- httpgroupfile="http://10.0.0.1"
-
- groupfile=`curl-m60-fRs-o$hiddenfilelist$httpgroupfile/$WORKGROUP`
-
- echo"Workgroupis$WORKGROUP.Willnowhideapplications,listinfile$hiddenfilelistwhichisgotfrom$httpgroupfile/$WORKGROUP.">>$LOG
- grephttpgroupfile|awk{print$1} |xargs$SETFILE-aV
-
- echo"Applicationssuccessfullyhidden.Exiting.">>$LOG
- exit0
至于logout的script. 只要是将上面的隐藏命令改为显示就可以了, 这里不在赘述.