日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Mac OS X(L1-3): 登錄/退出自動運行程序的設置

系統 1839 0

Mac OS X: 登錄/退出自動運行程序的設置


Update:

2009-02-22: 添加了E.AppleScript的部分

簡介 :本文介紹了普通用戶如何設置啟動程序,后面針對高級用戶或者管理員討論了4種不同的設定啟動程序的方法,一種設置退出程序運行的方法,并初步討論了對于企業用戶需要考慮的一些方面,和多重啟動程序的shell腳本的管理。

介紹幾個簡單的方法,其中1和2適用于普通/入門級用戶,后面的3適合于管理員或者高級用戶,而4討論了適合于企業管理員的管理方式,供參考。

Update History:

2009-02-14:

Initial

2009-02-15:

1. 題目的變更

2. 更改了一個錯誤:3.A中的不是loginwindow.plist 而是loginitems.plist文件。

3. 一些措詞的變化和前言

們知道,在Windows里面,普通用戶可以通過把程序或者是快捷方式復制到自己的Programs/Startup目錄中就在以后登錄系統時,讓Windows自動執行那個程序,而且管理員也可以通過Group Policy等方式強迫程序運行。

在OS X中,對于普通用戶,操作也是非常簡單的,而且可以通過多個途徑進行設置管理。

下面介紹幾個簡單的方法,其中1和2適用于普通/入門級用戶,后面的3適合于管理員或者高級用戶,而4討論了適合于企業級管理員的管理方式,供參考。

1. 最簡單的方法 就是,當用戶在Dock上的一個圖標上按住鼠標不動,那么就會彈出一個菜單,其中一項就是"Open at Login", 只要是選擇上,那么這個程序就會在該用戶下次登錄時自動運行,大家不妨試試。

2. 通過Account管理:

這個是比較中規中舉的設置方式,一般用戶,只要是可以打開System Preferences中的Accounts那么就可以自己設置啟動程序, 如下圖,有可能首先需要在左下角解鎖才能變更選項,在左邊的用戶列表中選中用戶自己,在右邊會有Login Items標簽出現,進入后用戶可以添加或者刪除現在的Login Items. 而上面第一種方法設置的啟動程序,也會在這個列表中列出來。

3. 高級操作:

大家都知道,在OS X中的配置信息一般都儲存在.plist文件中,就如同Windows的都儲存在Registry里面一樣,但是OS X的.plist文件可能比較分散,而且是分級的。

就拿上面用戶針對自己的環境的設置,都儲存在該用戶的Library文件夾中,具體說,上面的設置在/Users/用戶名/Library /Preferences/com.apple.loginitems.plist文件中,如果用Property List Editor查看,可以看到他們在SessionItems->CustomListItems里面。這些設置只是針對該用戶起作用,而且運行權限 是該用戶所擁有的權限。

對于管理員來說,不會為每一個用戶單獨設置這些啟動選項,而且這些選項對于該用戶是可以改動的,無法做到強制執行,所以管理員要對所有用戶進行設置。這一般有四種方法:

A. 如果沒有特殊的權限要求,那么可以通過添加項目到 /Library/Preferences/com.apple.loginitems.plist( loginwindow.plist) 文件中的鍵值 privilegedlist->CustomListItems 下面的方法來實現。具體的鍵值內容可以參見用戶底下的loginitems.plist文件的設置內容。

B. 或者通過生成一個可執行文件plist控制文件,并把它放置在/Library/LaunchAgents里面,也可以達到自動運行的效果,但是這個程序是以root用戶權限運行的。(其實嚴格來說這個方法不屬于login/logout hook)

C. 第一種LoginHook:

如果你的系統版本是Mac OS X 10.2.x, 10.3.x, or 10.4.2,那么可以使用這個方法。

打開/etc/ttys文件,找到下面的一命令行:

#console "/System/Library/CoreServices/loginwindow.app/Contents/MacOS/loginwindow" vt100 on secure window=/System/Library/CoreServices/WindowServer onoption="/usr/libexec/getty std.9600"

然后把你的登錄腳本語句加入如下(紅色的部分):

#console "/System/Library/CoreServices/loginwindow.app/Contents/MacOS/loginwindow -LoginHook /path/to/script " vt100 on secure window=/System/Library/CoreServices/WindowServer onoption="/usr/libexec/getty std.9600"

這樣你的腳本就可以運行了,應該說這種方法只適用于shell腳本的運行。

D. Login/Logout Hook:

這個方法功能比上面的都強,因為它可以支持退出(Logout)的控制,上面的方法都只是對登錄(Login)自動運行的控制,無法控制退出進程,而都是由loginwindow進程/程序來自動管理,這樣對于要求在用戶退出前需要進行清除步驟的,上面的方法都無法實現(當然了如果可以花費更多時間編寫daemons,當然可以完成相關操作),而這個方法提供一個簡單的接口。

這種方法 shell腳本運行root用戶的權限,這給管理員最大的自由度,而且對于一般用戶比較隱蔽,而且也無法查看或者變更。

下面的操作都在root用戶里面執行,所以:

sudo -s

cd /var/root/

首先創建一個腳本文件,比如/var/root/LoginHook/loginhook.sh和logouthook.sh

然后不能忘記設置可執行屬性:

chmod u+x /var/root/LoginHook/loginhook.sh

chmod u+x /var/root/LoginHook/logouthook.sh

最后設置:

defaults write com.apple.loginwindow LoginHook /var/root/LoginHook/loginhook.sh

defaults write com.apple.loginwindow LoginHook /var/root/LogoutHook/logouthook.sh

大功告成!

E. AppleScript的方案 :

使用AppleScrip同樣可以完成自動運行程序,比如下面的例子,自動運行/Applicaions/TextEdit.app程序.

如果希望更加通用的程序,可以使用下面的變化,比如保存為AddStarupItem:

使用方法就是:

利用AppleScript還可以自動刪除一個自動運行程序, 比如:


4. 進一步的考慮:
最后我們來進一步改進上面3.D里面的腳本,一般來說,對于企業環境,需要管理的環境比較復雜,這樣一個腳本管理所有的各個方面比較不易管理,首先就是版 本的變更/卸載等操作,以及不同的部門可能需要不同的腳本控制不同環境,雖然可以使用腳本語句達到對語句變更控制(sed等),但是畢竟復雜而且不易讀。
比如這里有一個管理多個學校的具體例子,一個學校使用KidPix 4, 這樣我們需要一個登錄腳本來重定向KidPix 4的用戶目錄到用戶本身的目錄下面,而另一個學校不使用KidPix, 而是需要一個公用的本地目錄,這樣每個學校的登錄腳本會不一樣,在更新等管理操作中會比較麻煩。
所以,我們使用這種方法來使問題簡單化,也就是把所有的管理不同問題的Login/Logout腳本都單獨生成一個shell腳本,并統一放在一個目錄下面,而上面的loginhook.sh和logouthook.sh就是一個調度程序,用它來依次調用所有的這些真正的管理腳本。這樣管理對于版本和卸載安裝都是比較容易的了。
下面是一個簡單化了調度腳本的主要部分:
USERNAME="$1"
SCRIPT_FOLDER="/var/root/LoginHook/Login"
SCRIPTS= `ls $SCRIPT_FOLDER`
for ONESCRIPT in SCRIPTS; do
if [[ -x "$HOOK_SCRIPTS_FOLDER/$ONEFILE" ]]; then
# execute the script if it is executable
"$HOOK_SCRIPTS_FOLDER/$ONEFILE" "$USERNAME"
fi
done



參考:
Mac OS X: Creating a login hook: http://support.apple.com/kb/HT2420?viewlocale=en_US
Running shell scripts at login and logout: http://www.bombich.com/mactips/loginhooks.html
LoginHook MultiScript Manager: http://ps-enable.com/software/LoginHookMultiScriptManager0.9b.dmg/view

Mac OS X(L1-3): 登錄/退出自動運行程序的設置


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 遵化市| 聊城市| 宁蒗| 中西区| 茶陵县| 静海县| 驻马店市| 通州市| 新余市| 洛川县| 蒙山县| 万宁市| 保定市| 西吉县| 阳朔县| 秀山| 棋牌| 来宾市| 莱芜市| 湟中县| 黑龙江省| 正镶白旗| 麦盖提县| 吉安县| 陇川县| 西畴县| 自贡市| 五河县| 方山县| 白城市| 剑河县| 株洲县| 卫辉市| 叶城县| 依安县| 漾濞| 广河县| 台中县| 海城市| 梨树县| 文安县|