Unix文件权限
Unix/Linux系統中,對文件(包括目錄)的權限有一套完整的管理機制。這樣的機制保證了系統的安全性。本文主要對Unix/Linux系統中的權限管理進行介紹。
一:文件類型
Unix系統中主要有7種文件類型,分別是普通文件(regular file,包括文本文件和二進制文件,在Unix中文本文件和二進制文件沒有本質的區別,可執行文件就是二進制文件,二進制文件需要滿足一定的格式才可以被內核解析執行),目錄文件,塊特殊文件和字符特殊文件(塊特殊文件提供對設備帶緩沖的訪問,字符特殊文件提供對設備不帶緩沖的訪問),FIFO(用于進程間通信,也稱為命名管道),套接字(用于進程間網絡通信),符號鏈接(指向另一個文件的文件)。
二:讀取文件信息
Unix系統在<sys/stat.h>文件中提供訪問文件信息的函數,主要包括stat,lstat,fstat,fstatat四個函數,stat函數利用文件名獲取文件相關信息,將獲取的信息放入stat結構中。stat結構也在<sys/stat.h>中定義。同時頭文件中定義了一系列宏可以用來驗證文件的類型,stat結構中的st_mode字段可以用來判斷文件類型。其原理是將st_mode與屏蔽字做按位與操作,然后與特定的表示文件類型的屏蔽字做對比,相等則表明是相關的文件類型。
三:文件訪問權限
Unix文件中標識文件權限的位有12位,從低位到高位的前9位為普通的權限位,分別表示其他用戶,組用戶,文件所有者用戶的rwx權限。對所有類型的文件而言,rwx權限都是有效的。除了這9位之外,還有3位,分別是設置用戶ID位,設置組ID位,粘著位。(粘著位是較老的概念,一些較常使用的程序的文本副本可以保存在交換區,這樣下次可以較快的將程序讀入內存,粘著位是標識是否將副本放置到交換區的位。)同時還有設置用戶ID位和設置組ID位,一個可執行的文件可能可以被非文件所有者的用戶執行,此時,程序可能需要文件所有者的權限才可以訪問程序中需要用到的資源,這時如果設置了設置用戶ID位則可以將程序(進程)的有效用戶ID設置為程序所有者的ID,如果設置了設置用戶組ID位,則可以將進程的有效用戶組ID設置為程序的用戶組ID。使用ls –al命令時,只會顯示一個十位的文件信息,第一個位為標識文件類型的位。其余9位位為標識文件所有者,組用戶,其他用戶權限的位。標識設置用戶ID位是通過在文件所有者權限位的x位顯示的,當x位為s時,x和設置用戶ID 位被設置,為S時,x位未被設置,設置用戶ID位被設置。設置用戶組ID位是通過組用戶權限的標識為x標識的,其中同時設置了設置用戶組ID 和用戶組執行位則為s,只設置了用戶組ID為S。
轉載于:https://www.cnblogs.com/libs5510/p/4793193.html
總結
- 上一篇: XML文件操作(C#)
- 下一篇: Android 文件的存储和加载