歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

Shell從基礎學起:第一章 文件安全與權限

  作者:未知  整理:蘭陵生  為了防止未授權用戶訪問你的文件,可以在文件和目錄上設置權限位。還可以設定文件在創建時所具有的缺省權限:這些只是整個系統安全問題中的一小部分。在這裡我們並不想對系統安全問題的方方面面進行全面的探討,只是介紹一下有關文件和目錄的安全問題。  本章包含以下內容:  • 文件和目錄的權限。  • setuid。  • chown和chgrp。  • umask。  • 符號鏈接。  創建文件的用戶和他(她)所屬於的組擁有該文件。文件的屬主可以設定誰具有讀、寫、執行該文件的權限。當然,根用戶或系統管理員可以改變任何普通用戶的設置。一個文件一經創建,就具有三種訪問方式:  1) 讀,可以顯示該文件的內容。  2) 寫,可以編輯或刪除它。  3) 執行,如果該文件是一個shell腳本或程序。  按照所針對的用戶,文件的權限可分為三類:  1) 文件屬主,創建該文件的用戶。  2) 同組用戶,擁有該文件的用戶組中的任何用戶。  3) 其他用戶,即不屬於擁有該文件的用戶組的某一用戶。  1.1 文件  當你創建一個文件的時候,系統保存了有關該文件的全部信息,包括:  • 文件的位置。  • 文件類型。  • 文件長度。  • 哪位用戶擁有該文件,哪些用戶可以訪問該文件。  • i節點。  • 文件的修改時間。  • 文件的權限位。  讓我們使用ls -l命令,來看一個典型的文件:  第一部分shell  下面讓我們來分析一下該命令所得結果的前面兩行,看看都包含了哪些信息:  $ls total 4232  -rwxr-xr-x 1 root root 3756 Oct 14 04:44 dmesg   -r-xr-xr-x 1 root root 12708 Oct 3 05:40 ps  -rwxr-xr-x 1 root root 5388 Aug 5 1998 pwd    total 4232:這一行告訴我們該目錄中所有文件所占的空間。  -rwxr-xr-x:這是該文件的權限位。如果除去最前面的橫槓,這裡一共是9個字符,他們分別對應9個權限位。通過這些權限位,可以設定用戶對文件的訪問權限。這9個字符可以分為三組:  r w x:文件屬主權限這是前面三位  r-x:同組用戶權限這是中間三位  r-x:其他用戶權限這是最後三位  後面我們還將對這些權限位作更詳細的介紹。出現在r、w、x位置上的橫槓表示相應的訪問權限被禁止。  1 該文件硬鏈接的數目。  root 文件的屬主。  root 文件的屬主root所在的缺省組(也叫做root )。  3578 用字節來表示的文件長度,記住,不是K字節!  Oct 14 04:44 文件的更新時間。  dmesg 文件名。  1.2 文件類型  還記得前面一節所提到的文件權限位前面的那個字符嗎?我們現在就解釋一下這個橫槓所代表的意思,文件類型有七種,它可以從ls -l命令所列出的結果的第一位看出,這七種類型是:  d 目錄。  l 符號鏈接(指向另一個文件)。  s 套接字文件。  b 塊設備文件。  c 字符設備文件。  p 命名管道文件。  - 普通文件,或者更准確地說,不屬於以上幾種類型的文件。  1.3 權限  讓我們用toUCh命令創建一個文件:  $ touch myfile  現在對該目錄使用ls -l命令:  $ls -l   -rw-r--r-- 1 dave admin 0 Feb 19 22:05 myfile  我們已經創建了一個空文件,正如我們所希望的那樣,第一個橫槓告訴我們該文件是一個普通文件。你將會發現所創建的文件絕大多數都是普通文件或符號鏈接文件(後面將會出現更多的符號鏈接文件)。  文件屬主權限組用戶權限其他用戶權限  rw-r--r—  接下來的三個權限位是文件屬主所具有的權限;再接下來的三位是與你同組用戶所具有的權限,這裡是admin組;最後三位是其他用戶所具有的權限。在該命令的結果中,我所屬於的缺省組也顯示了出來。下面是對該文件權限的精確描述:  表1-1 ls -l命令輸出的含義  (第一個字符) - 普通文件  (接下來的三個字符) rw- 文件屬主的權限  (再接下來的三個字符) r-- 同組用戶的權限  (最後三個字符) r-- 其他用戶的權限  因此,這三組字符(除了第一個字符)分別定義了:  1) 文件屬主所擁有的權限。  2) 文件屬主缺省組(一個用戶可以屬於很多的組)所擁有的權限。  3) 系統中其他用戶的權限。  在每一組字符中含有三個權限位:  r 讀權限  w 寫/更改權限  x 執行該腳本或程序的權限  這裡我們采用另外一種方式來表示剛才所列出myfile的文件權限:  -rw-r--r--  文件類型為普通文件文件屬主可以讀、寫同組用戶可以讀其他用戶可以讀  你可能已經注意到了,myfile在創建的時候並未給屬主賦予執行權限,在用戶創建文件時,系統不會自動地設置執行權限位。這是出於加強系統安全的考慮。必須手工修改這一權限位:  後面講到umask命令時,你就會明白為什麼沒有獲得執行權限。然而,你可以針對目錄設置執  行權限位,但這與文件執行權限位的意義有所不同,這一點我們將在後面討論。  上面這段關於權限位的內容可能不太好理解,讓我們來看幾個例子(見表1 - 2 )。更令人迷惑的是,對於文件屬主來說,在只有讀權限位被置位的情況下,仍然可以通過文件重定向的方法向該文件寫入。過一會兒我們就會看到,能否刪除一個文件還依賴於該文件所在目錄權限位的設置。  表1-2 文件權限及含義,權限所代表的含義  r-- --- --- 文文件屬主可讀,但不能寫或執行  r-- r-- --- 文文件屬主和同組用戶(一般來說,是文件屬主所在的缺省組)可讀  r-- r-- r- - 文任何用戶都可讀,但不能寫或執行  rwx r-- r- - 文文件屬主可讀、寫、執行,同組用戶和其他用戶只可讀  rwx r-x --- 文文件屬主可讀、寫、執行,同組用戶可讀、執行    權限所代表的含義  rwx r-x r- x 文文件屬主可讀、寫、執行,同組用戶和其他用戶可讀、執行  rw- rw- --- 文文件屬主和同組用戶可讀、寫  rw- rw- r- - 文文件屬主和同組用戶可讀、寫,其他用戶可讀  rw- rw- --- 文文件屬主和同組用戶及其他用戶讀可以讀、寫,慎用這種權限  設置,因為任何用戶都可以寫入該文件  1.4 改變權限位  對於屬於你的文件,可以按照自己的需要改變其權限位的設置。在改變文件權限位設置之前,要仔細地想一想有哪些用戶需要訪問你的文件(包括你的目錄)。可以使用chmod命令來改變文件權限位的設置。這一命令有比較短的絕對模式和長一些的符號模式。我們先來看一看符號模式。  1.4.1 符號模式  chmod命令的一般格式為:  chmod [who] operator [permission] filename  who的含義是:  u 文件屬主權限。  g 同組用戶權限。  o 其他用戶權限。  a 所有用戶(文件屬主、同組用戶及其他用戶)。  operator的含義:  + 增加權限。  - 取消權限。  = 設定權限。  permission的含義:  r 讀權限。  w 寫權限。  x 執行權限。  s 文件屬主和組s e t - I D。  t 粘性位*。  l 給文件加鎖,使其他用戶無法訪問。  u,g,o 針對文件屬主、同組用戶及其他用戶的操作。  *在列文件或目錄時,有時會遇到“ t”位。“t”代表了粘性位。如果在一個目錄上出現  “t”位,這就意味著該目錄中的文件只有其屬主才可以刪除,即使某個同組用戶具有和屬主  同等的權限。不過有的系統在這一規則上並不十分嚴格。  如果在文件列表時看到“ t”,那麼這就意味著該腳本或程序在執行時會被放在交換區(虛  存)。不過由於當今的內存價格如此之低,大可不必理會文件的“t”的使用。  1.4.2 chmod命令舉例  現在讓我們來看一些使用chmod命令的例子。  假定myfile文件最初具有這樣的權限:rwx rwx rwx :  命令結果含義  chmod a-x myfile rw- rw- rw- 收回所有用戶的執行權限  chmod og-w myfile rw- r-- r- - 收回同組用戶和其他用戶的寫權限  chmod g+w myfile rw- rw- r- - 賦予同組用戶寫權限  chmod u+x myfile rwx rw- r- - 賦予文件屬主執行權限  chmod go+x myfile rwx rwx r- x 賦予同組用戶和其他用戶執行權限    當創建myfile文件時,它具有這樣的權限:    -rw-r--r-- dave admin 0 Feb 19 22:05 myfile    如果這是我寫的一個腳本,我希望能夠具有執行權限,並取消其他用戶(所有其他用戶)的寫權限,可以用:  $ chmod u+x o-w myfile  這樣,該文件的權限變為:  -rwx r-- --- dave admin 0 Feb 19 22:05 myfile    現在已經使文件屬主對myfile文件具有讀、寫執行的權限,而admin組的用戶對該文件具有讀權限。如果希望某個腳本文件對你自己來說可執行,而且你對該文件的缺省權限很放心,那麼只要使它對你來說具有執行權限即可。  $ chmod u+x dt  1.4.3 絕對模式  chmod命令絕對模式的一般形式為:  chmod [mode] file   其中mode是一個八進制數。  在絕對模式中,權限部分有著不同的含義。每一個權限位用一個八進制數來代表,如表1 – 3下所示。下面用八進制目錄/文件權限表示,八進制數含義八進制數含義如下:    八進制數 含義  0 4 0 0 文件屬主可讀   0 2 0 0 文件屬主可寫   0 1 0 0 文件屬主可執行    0 0 4 0 同組用戶可讀   0 0 2 0 同組用戶可寫  0 0 1 0 同組用戶可執行




Copyright © Linux教程網 All Rights Reserved