linux檔案的存取權限和檔案模式

來源:互聯網
上載者:User

SUID含義:檔案的該位被設 置為1,在該檔案被執行時,該檔案將以所有者的身份運行,也就是說無論誰來執行這個檔案,他都有檔案所有者的特權,如果所有者是root的話,那麼執行人就有超級使用者 的特權了,這是該位將變成一個安全性漏洞,因此不要輕易設定該位。

SGID含義:運行者將具有檔案所有組的許可權。

STICKY粘合位: 要求作業系統既是在可執行程式退出後,仍要在記憶體中保留該程式的映像,這樣做是為了節省大型程式的啟動時間,但是會佔用系統資源,因此設定該位,不如把程式寫好。

set uid ;set gid;sticky bit區別

每一個檔案有所有者及組編號,set uid ;set gid可以改變使用者對檔案具有的許可權:寫和執行.

setuid: 在執行時具有檔案所有者的許可權.
setgid: 設定目錄. 一個目錄被標上setgid位,此目錄下建立的檔案繼承該目錄的屬性.
sticky bit: 該位可以理解為防刪除位元. 設定sticky bit位後,就算使用者對目錄具有寫入權限,但也只能添加檔案而不能刪除檔案。

如何設定:

操作這些標誌與操作檔案許可權的命令是一樣的, 都是 chmod. 有兩種方法來操作,
1) chmod u+s temp -- 為temp檔案加上setuid標誌. (setuid 只對檔案有效,U=使用者)
chmod g+s tempdir -- 為tempdir目錄加上setgid標誌 (setgid 只對目錄有效,g=組名)
chmod o+t temp -- 為temp檔案加上sticky標誌 (sticky只對檔案有效)

2) 採用八進位方式. 這一組八位元字三位的意義如下,
abc
a - setuid位, 如果該位為1, 則表示設定setuid
b - setgid位, 如果該位為1, 則表示設定setgid
c - sticky位, 如果該位為1, 則表示設定sticky

設定後, 可以用 ls -l 來查看. 如果本來在該位上有x, 則這些特殊標誌顯示為小寫字母 (s, s, t). 否則, 顯示為大寫字母 (S, S, T)
如:

rwsrw-r-- 表示有setuid標誌 (rwxrw-r--:rwsrw-r--)
rwxrwsrw- 表示有setgid標誌 (rwxrwxrw-:rwxrwsrw-)
rwxrw-rwt 表示有sticky標誌 (rwxrw-rwx:rwxrw-rwt)

理解檔案許可權

所謂的檔案許可權,是指對檔案的存取權限,包括對檔案的讀、寫、刪除、執行。Linux 是一個多使用者作業系統,它允許多個使用者同時登入和工作。因此 Linux 將一個檔案或目錄與一個使用者和組聯絡起來。請看下面的例子:

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)、寫資訊到目錄中去(增加和刪除索引點的串連)、搜尋目錄(能用該目錄名稱作為路徑名去訪問它所包含的檔案或子目錄)。具體來說就是:

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,它表示對於檔案的所有者,具有對該檔案讀、寫、執行的許可權。對於檔案所屬組的使用者,擁有讀、寫的許可權。對於其他使用者,只有讀許可權。

這裡需要注意的是:檔案的建立者是唯一可以修改該檔案存取權限的普通使用者,另外一個可以修改檔案存取權限的使用者是 root。

還有一種表示方法,就是用字串來設定檔案存取權限。其中讀用 r 表示,寫用 w 表示,執行用 x 表示;所有者用 u 表示,組使用者用 g 表示,其他使用者用 o 表示,所有使用者用 a 表示。那麼上面例子就寫成西面的模樣:

chmod a+r,u+w,u+x,g+w 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指令碼設定無效!只對應用程式有效!

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

linux/unix 下的可執行檔:

被設定了setuid, 當一個程式一旦設定了該標記以後, 使用該可執行程式的進程將擁有該執行檔案的所有者的許可權,可提升使用者的許可權,普通使用者可以執行改命令,使自己升級為root許可權。

setuid的用法是: chmod 4755 program 或 chmod u+s program (setuid 只對檔案有效)

被設定了setgid, 同理使用該程式的進程將擁有該程式所有組的許可權,單獨setGid的檔案非常少用,通常都是即setUid又setGid,同時setuid,setgid 是為了綁定某個特殊使用者及其組的特殊許可權。

setgid的用法是:chmod 2755 dir 或 chmod g+s dir (setgid 只對目錄有效)

同時設定setuid,setgid的用法:chmod 6755 program

被設定粘著位,設定的用法是: chmod 1777 file 或 chmod o+t file (sticky只對檔案有效)

當一個目錄被設定為"粘著位"(用chmod a+t),則該目錄下的檔案只能由
一、超級管理員刪除
二、該目錄的所有者刪除
三、該檔案的所有者刪除
也就是說,即便該目錄是任何人都可以寫,但也只有檔案的屬主才可以刪除檔案 。


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.