歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Linux 程序設計學習筆記----Linux下文件類型和屬性管理

Linux 程序設計學習筆記----Linux下文件類型和屬性管理

日期:2017/3/1 9:41:32   编辑:Linux編程

Linux文件類型和權限

數據表示

文件屬性存儲結構體Inode的成員變量i_mode存儲著該文件的文件類型和權限信息。該變量為short int類型。

這個16位變量的各個位功能劃分為:

  • 第0-8位為權限位,為別對應擁有者(user),同組其他用戶(group)和其他用戶(other)的讀R寫W和執行X權限。
  • 第9-11位是權限修飾位,包括設置有效ID(setuid)位,設置有效用戶組ID(setgid),和粘貼位(sticky)。
  • 第12-15位是文件類型位。

如下一個例子:

drwxr-xr-x 5 root root 1024 Sep 13 03:27 Desktop

與文件權限相關聯的是第一、第三、第四個域。第三個域是文件的所有者,第四個域是文件的所屬組,而第一個域則限制了文件的訪問權限。在這個例子中,文件的 所有者是 root,所屬的組是 root,文件的訪問權限是 drwxr-xr-x。對於文件和目錄講,每個文件和目錄都有一組權限標志和它們結合在一起,在上例中就是第一個域中的內容。下面來仔細分析這個域中各個 符號的意義:

該域由 10 個字符組成,可以把它們分為四組,具體含義分別是:

d rwx r-x r-x

文件類型 所有者權限標志 組權限標志 其他用戶權限標志


其中:

文件類型:第一個字符。

由於 Linux 系統對與設備、目錄、文件都當作是文件來處理,因此該字符表明此文件的類型,字符與對應的意義如下表:

文件標志 文件類型 例子

  • - 普通文件 數據文件、ASCII 純文本 文件、程序
  • d 目錄 /bin
  • b 塊設備 /dev/hda(第一個 IDE 硬盤)
  • c 字符設備 /dev/ttyS1(與 DOS 種的串口 2 等同)
  • s 套接字 /dev/log
  • p 命名管道 /dev/initctl(與“|”等同)
  • l 符號鏈接 /dev/modem->/dev/ttyS1

權限標志

對每個文件或目錄都有 4 類不同的用戶。每類用戶各有一組讀、寫和執行(搜索)文件的訪問權限,這 4 類用戶是:

  • root:系統特權用戶類,既 UID = 0 的用戶。
  • owner:擁有文件的用戶。
  • group:共享文件的組訪問權限的用戶類的用戶組名稱。
  • world:不屬於上面 3 類的所有其他用戶。


作為 root,他們自動擁有了所有文件和目錄的全面的讀、寫和搜索的權限,所以沒有必要明確指定他們的權限。其他三類用戶則可以在耽擱文件或者目錄的基礎上別 授權或撤消權限。因此對另外三類用戶,一共 9 個權限位與之對應,分為 3 組,每組 3 個,分別用 r、w、x 來表示,分別對應 owner、group、world。

權限位對於文件和目錄的含義有些許不同。

每組 3 個字符對應的含義從左至右的順序,對於文件來說是:讀文件的內容(r)、寫數據到文件(w)、做為命令執行該文件(x)。

對於目錄來說是:讀包含在目錄中 的文件名稱(r)、寫信息到目錄中去(增加和刪除索引點的連接)、搜索目錄(能用該目錄名稱作為路徑名去訪問它所包含的文件或子目錄)。

Linux程序設計(原書第2版)(PDF中文版 + 源碼) http://www.linuxidc.com/Linux/2011-04/34147.htm

Linux常用命令大全-管理文件和目錄的命令 http://www.linuxidc.com/Linux/2011-08/40437.htm

Linux文件系統層次結構分析、目錄管理、文件管理、日期管理常用命令使用 http://www.linuxidc.com/Linux/2013-05/84988.htm

Linux 文件管理常用命令 http://www.linuxidc.com/Linux/2013-05/84732.htm

Linux 程序設計學習筆記----文件管理實例應用 http://www.linuxidc.com/Linux/2014-08/104983.htm

具體來說就是:

1. 有只讀權限的用戶不能用 cd 進入該目錄;還必須有執行權限才能進入。

2. 有執行權限的用戶只有在知道文件名並擁有該文件的讀權限的情況下才可以訪問目錄下的文件。

3. 必須有讀和執行權限才可以使用 ls 列出目錄清單,或使用 cd 進入目錄。

4. 如用戶有目錄的寫權限,則可以創建、刪除或修改目錄下的任何文件或子目錄,既是該文件或子目錄屬於其他用戶。

========================================================================================================

修改文件權限

首先講修改文件的所有權,使用 chown 和 chgrp 命令

chown new_user file or directory:修改文件或目錄的所有者。

chgrp new_group file or directory:修改文件或目錄的所屬組。


這裡需要注意的是:普通用戶不能將文件或目錄的所有權交與他人,只有 root 有這一權限。但是普通用戶有權改變文件或目錄的所屬組

由於每類用戶的權限都是由 rwx 三位組成,因此可以用三個八進制數字表示文件的訪問權。一個八進制數字可以用三個二進制數字表示,那麼與其對應,權值為 4 的位對應 r,權值為 2 的位對應 w,權值為 1 的位對應 x。對於一類用戶,將這三位與其對應的權值相乘求和,就可以得出對該類用戶的訪問權限。

改變文件訪問權限的命令是 chmod,格式是:

chmod permission file_name

比如 chmod 764 a.txt,它表示對於文件的所有者,具有對該文件讀、寫、執行的權限。對於文件所屬組的用戶,擁有讀、寫的權限。對於其他用戶,只有讀權限。

chmod是Linux下設置文件權限的命令,後面的數字表示不同用戶或用戶組的權限

一般是三個數字:
第一個數字表示文件所有者的權限
第二個數字表示與文件所有者同屬一個用戶組的其他用戶的權限
第三個數字表示其它用戶組的權限。

權限分為三種:讀(r=4),寫(w=2),執行(x=1) 。 綜合起來還有可讀可執行(rx=5=4+1)、可讀可寫(rw=6=4+2)、可讀可寫可執行(rwx=7=4+2+1)。

所以,chmod 755 設置用戶的權限為:

1.文件所有者可讀可寫可執行
2.與文件所有者同屬一個用戶組的其他用戶可讀可執行
3.其它用戶組可讀可執行

chmod 4755與chmod 755 的區別在於開頭多了一位,這個4表示其他用戶執行文件時,具有與所有者相當的權限。

例如:root用戶創建了一個上網認證程序netlogin,如果其他用戶要上網也要用到這個程序,那就需要root用戶運行chmod 755 netlogin命令使其他用戶也能運行netlogin。

但是netlogin執行時可能需要訪問一些只有root用戶才有權訪問的文件,那麼其他用戶執行netlogin時可能因為權限不夠還是不能上網。

這種情況下,就可以用 chmod 4755 netlogin 設置其他用戶在執行netlogin也有root用戶的權限,從而順利上網。

ps:對shell腳本設置無效!只對應用程序有效!


這裡需要注意的是:文件的創建者是唯一可以修改該文件訪問權限的普通用戶,另外一個可以修改文件訪問權限的用戶是 root。

還有一種表示方法,就是用字符串來設定文件訪問權限。其中讀用 r 表示,寫用 w 表示,執行用 x 表示;所有者用 u 表示,組用戶用 g 表示,其他用戶用 o 表示,所有用戶用 a 表示。那麼上面例子就寫成下面的模樣:

chmod a+r,u+w,u+x,g+w a.txt

更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2014-08/104984p2.htm

Copyright © Linux教程網 All Rights Reserved