注: 本文是基於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. Create a logfile
- LOG="/tmp/hideapps.log"
- #2. Path to the SetFile Binary from Developer Tools.
- SETFILE="/usr/local/bin/SetFile"
- #3. Path to the folder with applications we want to hide.
- APP_PATH="/Applications" # your path here
- #4. We need to get the MCX workgroup so we can hide the right apps.
- WORKGROUP=`defaults read /Library/Managed/ Preferences/$1/com.apple.MCX workgroup`
- #5. Set file name for hidden file list.
- hiddenfilelist="/tmp/hiddenfilelist.txt"
- #6. Set hidden apps for each workgroup. Sample application names are included.
- #. Be sure to include the .app after the application name.
- httpgroupfile="http://10.0.0.1"
- groupfile=`curl -m 60 -fRs -o $hiddenfilelist $httpgroupfile/$WORKGROUP`
- echo "Workgroup is $WORKGROUP. Will now hide applications, list in file $hiddenfilelist which is got from $httpgroupfile/$WORKGROUP." >> $LOG
- grep httpgroupfile | awk {print $1} | xargs $SETFILE -a V
- echo "Applications successfully hidden. Exiting." >> $LOG
- exit 0
至於logout的script. 只要是將上面的隱藏命令改為顯示就可以了, 這裡不在贅述.