Mac OS X:單用戶模式(Single User Mode)的操作和安全漏洞
Update:
2009-02-17: 在“1:檢查修復磁盤”后面添加了:磁盤檢查正常和錯誤的判斷,以及如果碰到錯誤的應對方法。
簡介
:
本文力圖簡單明了地敘述單用戶模式的進入和使用,有關基本的操作命令和用途,和常用的應用工具。并且簡單敘述NetInfo和dslocl的多用戶管理架構,同時涉及OS X 10.4 Tiger系統和10.5 Leopard系統之間在多用戶模式里管理用戶的不同,在單用戶模式下如何管理多用戶模式用戶的賬號,兩個root賬號的不同,兼顧了10.4和10.5系統服務的管理差異。最后,我們探討一下有關Mac系統軟硬件的安全問題。
本文主要是針對高級用戶或者系統管理員或者安全專員,在企業環境中部署和設計適合特殊環境時,考慮的一個方面作一個參考。
為什么要進入單用戶模式?
單用戶模式就是Single User Mode, 在好多文章中把它縮寫為SUM. 這是很多*nix系統都支持的一種系統啟動模式,主要是便于管理員的系統維護.
使用SUM的情況并不多,有的時候系統問題的解決或者是系統維護需要進入單用戶模式,比如:
. 修復系統磁盤錯誤,如果在Disk Utility里面的Repair Disk不能修復錯誤,試一試單用戶模式,可能是個好主意。
. 如果你忘記了administrator的密碼, 手邊沒有啟動盤, 那么可以變更root用戶密碼,試試單用戶模式.
. 可能的用戶數據庫的損壞造成的系統問題.
. 如果你是一個administrator, 那么你應該使用SUM來設定/管理甚至禁止普通用戶進入SUM,用以提高系統的安全性.
如何進入單用戶模式
簡單來說就是當啟動計算機,聽到一聲開機聲的時候迅速同時按住兩個鍵Command+s, 直到看到字符顯示松開,一般情況下就可以進入單用戶模式了。
如果你的電腦設置了Firmware密碼, 那么請先打開它,詳情請參考Apple的官方文檔:Setting up firmware password protection in Mac OS X(Article: HT1352)(http://support.apple.com/kb/HT1352)。
如果你嘗試多次仍然不能成功,那么一是有可能你的硬件不支持或者需要升級Firmware, 或者可能是系統管理員設置不準許用戶進入,詳見后面有關安全的話題。
操作步驟
:
進入單用戶模式后如何操作呢?因為它不是人們熟悉的圖形界面的GUI, 而是文本界面的shell環境了(CLI). 下面說說常用的命令和步驟。
1. 檢查磁盤
:運行下面的命令然后回車,
/sbin/fsck -fy
其實, 每次開機系統都會快速運行這個檢查磁盤的命令來確定磁盤系統的完整性.
如果fsck沒有檢查到磁盤錯誤,它將在最后顯示 The volume (name_of_volume) appears to be OK。否則 如果修復了錯誤或者有警告,都會顯示: FILE SYSTEM WAS MODIFIED,這個時候,你一定要重復上面命令,直到顯示OK為止。如果多次嘗試后依然有問題,那么你的硬盤硬件有可能有問題,需要注意或換一個新硬盤。
這個官方文章列出fsck檢查錯誤信息的解釋: Mac OS X: fsck reports benign errors when journaling is turned on http://support.apple.com/kb/TS2028?viewlocale=en_US. 注意:只有在支持journaling的卷(volume)上才支持,這也是為什么在安裝系統的時候,要選擇journaled的。
2. 安裝磁盤卷
:只有安裝了磁盤卷,后面的命令才能做:
mount -uw /
3. 變更root密碼:
chroot /
passwd
3. 退出/重啟動
:
reboot
或者
exit
上面變更了root用戶的密碼,在進入下一步之前,讓我們來先看看OS X的多用戶模式里用戶管理的架構。注:在網絡環境里, Mac系統使用LDAP來管理用戶.
在OS X 10.4 Tiger 系統里,多用戶的用戶管理是依靠NetInfo來管理的,NetInfo是一個特殊的數據庫, 它的數據庫存放在/private/var/db/netinfo/local.nidb/里面, 只有root用戶可以存取,用戶一般通過NetInfo manager工具和命令行niutil或者編程接口來對其操作。當然了, NetInfo還管理好多系統的資源,比如打印機,網絡資源,協議等等. 關于詳細的NetInfo的介紹可以參考WikiPedia的文獻NetInfo:http://en.wikipedia.org/wiki/NetInfo
因為自從Leopard 10.5系統的發布,OS X管理用戶的機制有了一個大的變化,變成了基于XML的文件管理方式(注:到目前位置沒有找到關于賬戶密碼文件存放的位置,如果這個文件被找到,那么破解賬戶密碼也就更容易了),它是Open Directory的一個Directory Service服務,而且提供了一套不同于以前的管理命令集,比如dscl。管理用戶的XML存放在/private/var/db/dslocal/里面。
細心的用戶會發現,即使我們原來在GUI環境里修改了root用戶的密碼,但是在進入單用戶模式后,實際上系統是在root用戶里操作,而上面變更root密碼的時候,并沒有要求輸入原密碼。這是因為,單用戶模式下,因為沒有啟動相應服務,所以root使用原來的*nix系統文件方式(/etc/passwd或者/etc/shadow文件保存)的用戶管理,兩者管理的系統不一樣。
在GUI里面我們使用NetInfo/Directory Utility激活的root用戶,都是OS X的多用戶管理服務里面的root,在Termianl里面輸入su root的時候,系統要求的密碼就是這個OS X的root的密碼,如果這個root沒有被激活,那么這個su root命令也無法成功.
而在正常的Terminal里面也可以用passwd命令來修改*nix的root的文件密碼, 而一般不帶選項的時候默認的是本機的OS X用戶服務,看看命令:
sudo passwd -i file root
系統會直接要求你輸入一次新的root密碼,并確認一次。
大家對比一下普通情況下修改密碼的命令:
sudo passwd root
即便我們在這里設置了*nix的root文件密碼,進入單用戶模式的時候,機器也不會詢問你輸入root的密碼,這個問題在后面的安全里面再說。
4. 變更其它用戶密碼
要對用戶數據庫操作,首先要啟動系統服務,這在10.4和10.5也有些變動,10.5對系統服務的啟動有了較大的修改,把所有的系統服務的管理交給了launchd, launchd在/System/Library/LauncDaemons/ 和 /System/Library/launchAgents/尋找所有的系統服務的.plist定義文件,而在10.4中,系統的啟動管理比較分散,所以在下面和后面可以看到它們的不同造成一些系統管理的不同。
好了,下面分別針對不同的系統進行描述,后面有的地方也要分別闡述:
首先要啟動系統的相應服務:
對于10.4 Tiger系統:
sh /etc/rc.local
對于10.5 Leopard系統:
launchctl /System/Library/LaunchDaemons/com.apple.DirectoryServices.plist
launchctl /System/Library/LaunchDaemons/com.apple.DirectoryServicesLocal.plist
通過下面的命令來變更多用戶模式里的root用戶的密碼, 把其中的rootpassword變成你自己的root密碼:
dscl . -passwd /Users/"root" "rootpassword"
基于CLI的交互方式變更root用戶密碼:
對于10.5 Leopard系統:
% dscl
Entering interactive mode... (type "help" for commands)
> -passwd Local/Default/Users/root MY_PASSWORD
(Ctrl-D)
5. 添加用戶
然后對用戶操作.
我們可以通過創建一個管理員用戶的方式,來達到登錄多用戶方式:
dscl . -create /Users/"myadmin"
dscl . -create /Users/"myadmin" UserShell /bin/bash
dscl . -create /Users/"myadmin" RealName "myAdministrator"
dscl . -create /Users/"myadmin" UniqueID "id"
dscl . -create /Users/"myadmin" PrimaryGroupID "20"
dscl . -create /Users/"myadmin" NFSHomeDirectory /Users/myadmin
dscl . -passwd /Users/"myadmin" "password"
dscl . -append /Groups/admin GroupMembership myadmin
要保證上面的命令成功,首先用戶要唯一,用戶的ID要唯一, 使用下面的命令來獲得用戶的列表
dscl . -list /Users
要得到一個唯一的用戶ID, 可以使用dscl . -list /users uid來列出所有用戶的ID,也可以使用下面的命令來自動得到一個空閑的最大的ID:
echo $[$(dscl . -list /Users uid | awk '{print $2}' | sort -n | tail -n1)+1]
6. 刪除用戶數據庫
有可能因為硬盤的問題,造成用戶數據庫的損壞,這時,我們就要刪除多用戶模式用戶數據庫來讓OS X系統來重建一個默認的初始的數據庫,并初始化系統。
同樣地對于兩個版本的系統操作是不同的,而且在10.5中還要刪除一個確認安裝成功完成的標記文件.
對于10.4 Tiger系統:
rm -Rf /var/db/netinfo
對于10.5 Leopard系統:
rm -Rf /var/db/dslocal
rm /var/db/.AppleSetupDone
7. 運行Applejack工具
:
Applejack是一個開源軟件,它可以在terminal里面通過菜單選擇方式對OS X系統進行一些管理,請詳見AppleJack的官方網站的說明:http://applejack.sourceforge.net
安全的考慮
:
通過前面的講述,大家可以看到,如果一個系統沒有很好的安全措施部署,那么安全隱患是明顯存在的。無論是你Mac電腦被外人接觸,或者你的筆記本電腦丟失,別人都可以比較容易地入侵你的電腦,獲得管理員權限之后,就可以控制你的電腦,任意存取你的日常未經加密的數據,也可能輕易植入木馬等駭客程序等。
在這樣一個不安全的電腦上工作,令人不由得對安全漏洞產生恐懼。當然了絕對安全的系統不現實,但是盡可能的安全,或者說達到一定程度的安全還是可以的。幸好,基本上目前流行的Mac系統都有硬件和軟件安全方面的考慮。
1. 硬件措施
:
現在每個Mac系統,包括臺式機和筆記本,都可以設定固件密碼(Firmware Password), 對于你的硬件是否支持和如何設置,請看Apple的官方文檔: Setting up firmware password protection in Mac OS X(http://support.apple.com/kb/HT1352).
一般情況下,這個密碼是沒有設置的,而且一旦設置的密碼丟失,按照蘋果的官方說法是,沒有人可以破解的,但是其實并不是這樣的,比如你可以通過改變硬件環境(比如內存)并重置NVRAM/PRAM(參見Apple的官方文檔Resetting your Mac's PRAM and NVRAM: http://support.apple.com/kb/HT1379).
本來對硬件的安全措施充滿希望的人,看完了上面的敘述,恐怕要失望了,破解起來依然是這樣的簡易。
既然硬件上無法阻止他人進入單用戶模式,那么軟件應該可以吧?沒錯,目前來說有比較好的辦法,下面來看看軟件的措施。
2. 軟件措施
:
首先,讓我們找到root用戶的home目錄, 那就是/var/root/目錄,我們先在這里建立一個叫做.profile的文件.
touch /var/root//profile
然后,根據不同的OS X版本,編輯.profile文件如下:
對于10.4:
if [ "$VerboseFlag" = "-v" ];
then
/sbin/reboot;
#/usr/bin/lock -p -t 86343727;
fi
對于10.5:
if [ "$TERM" = "vt100" ];
then
/sbin/reboot;
#/usr/bin/lock -p -t 86343727;
fi
上面判斷系統是否在單用戶模式,如果是, 它將自動重啟動,從而阻止了用戶使用單用戶模式,如果你希望正常用戶可以是用單用戶模式,那么把reboot那一行,換成下面注釋了的那行,這樣系統會詢問用戶root密碼。
后記:
安全問題一直是一個縈繞在IT人心頭的一個問號,如何提供一個足夠安全的系統,總是一個問題。我們這里只是從Mac OS X的單用戶模式來敘述了一些關于Mac系統的安全問題的一個方面。當然,對于Mac系統還有好多其它方面的安全問題需要關注,就我目前的理解和掌握的知識來說,Mac系統的FileVault是一個可能也是唯一的比較理想的用戶數據安全措施。
References:
1. Password-Protecting Single-User Mode in Tiger:http://www.macgeekery.com/gspot/2006-02/password-protecting_single-user_mode_in_tiger
2. Forum->Disable Single User mode: http://forums.macosxhints.com/archive/index.php/t-84049.html
3. 10.5: How to reset Leopard back to the Setup Assistant: http://www.macosxhints.com/article.php?story=2007110800450816
4. How can I run radmind in Single User mode?: http://www.macos.utah.edu/documentation/system_deployment/radmind/faqs/single_user_mode.html
5. Mac OS X Single User Mode Password Reset: http://www.jessecole.org/2008/06/25/mac-os-x-single-user-mode-password-reset/
6. 修改root密碼的幾種方法: http://bbs.kenapple.com/thread-1607-1-2.html
7. Setting up firmware password protection in Mac OS X: http://support.apple.com/kb/HT1352
8. Mac OS X: Changing or resetting an account password: http://support.apple.com/kb/HT1274
9. Mac OS X: How to back up and restore your files: http://support.apple.com/kb/HT1553
10. Locing SUM: http://tech.tedthepenguin.com/mac-specific/booting-modes/single-user-mode/locking-sum.html
11. Mac OS X 10.5: Hacking Root: http://sprocket.io/blog/2007/12/mac-os-x-105-hacking-root/
12. Mac OS X 10.5.6 Update - Caution!:http://www.themactech.com/?p=227
13. Resetting your Mac's PRAM and NVRAM: http://support.apple.com/kb/HT1379
14. AppleJack: http://applejack.sourceforge.net/
15: Single-User Mode Commands : http://www.westwind.com/reference/OS-X/commandline/single-user.html
Mac OS X: How to start up in single-user or verbose mode
Resolve startup issues and perform disk maintenance with Disk Utility and fsck
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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