Filesystem Hierarchy Standard 文件系統(tǒng)層次化標準(以下簡稱FHS)
FHS為類UNIX操作系統(tǒng)的文件目錄結(jié)構(gòu)制定了一套標準,目的是讓用戶預(yù)知文件或目錄的存放位置。UNIX操作系統(tǒng)的常見目錄結(jié)構(gòu)如下所示。
/ :根目錄,以斜杠表示,其他所有文件和目錄在根目錄下展開。
/bin :"binary"(二進制的) 的簡寫,存放提供用戶級基礎(chǔ)功能的二進制文件,如ls、ps等。
/boot :存放能使系統(tǒng)成功啟動的所有文件。iOS中此目錄為空。
/dev :"device"的簡寫,存放BSD設(shè)備文件。每個文件代表系統(tǒng)的一個塊設(shè)備或字符設(shè)備,一般來說,“塊設(shè)備”以塊為單位傳輸數(shù)據(jù),如硬盤;而“字符設(shè)備”以字符為單位傳輸數(shù)據(jù),如調(diào)制解調(diào)器。
/sbin :"system binaries"的簡寫,存放提供系統(tǒng)級基礎(chǔ)功能的二進制文件,如netstat、reboot等。
/etc :"Et Cetera"的簡寫,存放系統(tǒng)腳本及配置文件,如passwd、hosts等。在iOS中,/etc是一個符號鏈接,實際指向/private/etc。
/lib:存放系統(tǒng)庫文件、內(nèi)核模塊及設(shè)備驅(qū)動等。iOS中此目錄為空。
/mnt:"mount"的簡寫,存放臨時的文件系統(tǒng)掛載點。iOS中此目錄為空。
/private:存放兩個目錄,分別是/private/etc和/private/var。
/tmp:臨時目錄。在iOS中,/tmp是一個符號鏈接,實際指向/private/var/tmp。
/usr:包含了大多數(shù)用戶工具和程序。/usr/bin包含那些/bin和/sbin中未出現(xiàn)的基礎(chǔ)功能,如nm、killall等;/usr/include包含所有的標準C頭文件;/usr/lib存放庫文件。
/var:"variable"的簡寫,存放一些經(jīng)常更改的文件,比如日志、用戶數(shù)據(jù)、臨時文件等。其中/var/mobile和/var/root分別存放了mobile用戶和root用戶的文件,是重點關(guān)注的目錄。
UNIX系統(tǒng)文件權(quán)限簡介(UNIX一切皆文件:讀寫普通文件、目錄、設(shè)備、socket、管道、CPU信息、進程信息等)
系統(tǒng)用3位(bit)來表示文件的權(quán)限,從高位到低位分別是r(read)權(quán)限、w(write)權(quán)限,以及x(execute)權(quán)限。文件與用戶的關(guān)系存在以下三種可能性:
此用戶是屬主用戶(文件所有者的權(quán)限)
此用戶不是屬主用戶,但在屬主組里(組用戶權(quán)限)
此用戶既不是屬主用戶,又不在屬主組里(Other用戶權(quán)限)
rwx r-x r--
111 101 100
所有者 屬組 其他
用3*3位來表示一個文件的權(quán)限,如果某一位為1,則這一位代表的權(quán)限生效,否則無效。
例如,111101101代表rwxr-xr-x,即該文件的屬主用戶擁有r、w、x權(quán)限,而屬主組和其他所有人只具有r和x權(quán)限;
同時,二進制的111101101轉(zhuǎn)換成十六進制是755,也是一種常見的權(quán)限表示法。
可以使用chmod 命令修改文件權(quán)限,如 chmod 755 filename
iOS的獨有目錄
/Applications:存放所有的系統(tǒng)App和來自于Cydia的App,但不包括StoreApp。
/Developer:如果一臺設(shè)備連接Xcode后被指定為調(diào)試用機,Xcode就會在iOS中生成這個目錄,其中會含有一些調(diào)試需要的工具和數(shù)據(jù)。
/Library:存放一些提供系統(tǒng)支持的數(shù)據(jù)。其中/Library/MobileSubstrate下存放了所有基于CydiaSubstrate(原名MobileSubstrate)的插件(如:tweak編寫的插件)。
/System/Library:iOS文件系統(tǒng)中最重要的目錄之一,存放大量系統(tǒng)組件。
/System/Library/Frameworks和/System/Library/PrivateFrameworks:存放iOS中的各種framework
/System/Library/CoreServices里的SpringBoard.app:iOS桌面管理器(類似于Windows里的explorer),是用戶與系統(tǒng)交流的最重要中介。
/User:用戶目錄(其實就是mobile用戶的home目錄),實際指向/var/mobile,這個目錄里存放大量用戶數(shù)據(jù),比如:
/var/mobile/Media/DCIM下存放照片;
/var/mobile/Media/Recordings下存放錄音文件;
/var/mobile/Library/SMS下存放短信數(shù)據(jù)庫;
/var/mobile/Library/Mail下存放郵件數(shù)據(jù)。
/var/mobile/Containers,存放StoreApp。值得注意的是,App的可執(zhí)行文件在bundle與App中的數(shù)據(jù)目錄被分別存放在/var/mobile/Containers/Bundle和/var/mobile/Containers/Data這兩個不同目錄下。其中/var/mobile/Containers/Data是我們常用的應(yīng)用沙盒目錄的起始目錄:
NSString *directory = NSHomeDirectory(); //獲取沙盒根目錄