天天看點

檔案權限

檔案的權限

當運作如下指令時:

[root@marvel ~]# ll /etc/passwd

出現下面結果:

-rw-r--r--. 1 root root 1933 May 19 11:14 /etc/passwd

解釋如下:

1)- 代表檔案類型

-:普通檔案

d:目錄檔案

l:軟連接配接檔案

s:套接字檔案

p:管道檔案

c:字元裝置檔案 無緩存,順序通路

b:塊裝置檔案 有緩存,随機通路

2)rw-r--r-- 代表檔案的權限

能使用此檔案的使用者分為三類,屬主,屬組的使用者和其他使用者

從左到右,每三位分别代表三類使用者的權限

r:讀權限

w:寫權限

x:執行權限

-:代表沒有相應位置的權限

對于檔案,讀寫執行分别代表的含義:

r:可用檔案檢視類工具擷取檔案内容

w:可修改其内容,隻有此權限時,不能檢視再修改,但是可以用重定向修改

x:可以把檔案送出給核心,啟動一個程序來執行

對于目錄來說,讀寫執行分别代表的含義:

r:可以數用ls檢視此目錄中的檔案清單

w:可以在目錄中建立/删除檔案

x:可以使用ls -l檢視此目錄中檔案清單的詳細資訊,也可以用cd進入此目錄

Attention:對于某個使用者來說,目錄有w權限,無論裡面檔案是否有w權限,都可被删除

基本的檔案權限就用這9位來表示,這樣将其功能位置固定,用10表示對應其功能開關,那麼就是一個9位的二進制數,再将每三為捆綁加以區分對每類使用者的權限,這樣就可以清晰的看到每類使用者的權限了

e.g.rw-r----- 對應二進制 110 100 000 再将每三位捆綁 變成三位的八進制數。 640 屬主讀寫權限,屬組讀權限,其他無權限,這通常是一個檔案的預設權限 目錄預設 755

3). 如果有此項,則代表該檔案有selinux标簽,使用ll -Z檢視,如果是目錄則用ll -dZ

Following the file mode bits is a single character that specifies

     whether an alternate access method such as an access control list

     applies to the file.  When the character following the file mode

     bits is a space, there is no alternate access method.  When it is

     a printing character, then there is such a method.

    在檔案權限位後面,附加有一個單字元。用來表示是否有一個

    可替換的通路控制措施應用在這個檔案上。例如,通路控制清單(ACL,access control list)。

    當檔案權限位後面附加的是一個空格時,表示系統沒有可替換的通路控制措施。

    當是一個可列印字元時,表示系統存在這樣一個通路控制措施。

     GNU `ls' uses a `.' character to indicate a file with an SELinux

     security context, but no other alternate access method.

     GNU的ls指令使用‘.’字元表示檔案使用了selinux

     安全上下文,但是沒有其他可替代的通路控制措施

     A file with any other combination of alternate access methods is

     marked with a `+' character.

    在使用SElinux安全上下文的同時,混用其他通路控制措施的檔案用+字元标記

4) 1代表硬連結或軟連結的數量(參見MyNewDocument/New_1/檔案系統下/inode)

5)檔案的屬主

6)檔案的屬組

7)時間戳

8)檔案或目錄名字

1.修改檔案權限

  chmod [option] OCTAL/MODE file/directory

     -R 遞歸修改權限 修改目錄權限采用

     OCTAL 八進制數,在上一節上中描述了八進制數的由來,跟此處的八進制數一緻

      chmod 644 file 

      将檔案權限設為644 即 rw- r-- r-- 

     MODE [u,g,o] [+/-/=] [rwx]

       u:代表要設定屬主權限

       g: 代表要設定屬組權限

       o:代表要設定其他權限

       a:代表所有人

       這三個可以組 例如 ug= uo+等

       +:某一類使用者增權重限

       -:某一類使用者減少權限

       =:指定某一類使用者的權限

       rwx:最多3位,要什麼權限就寫什麼權限,沒有不寫

        這是基本權限位,除此還有st

chmod --reference=rfile file 依據rfile的權限來設定file的權限

小竅門:

設定一個目錄本身及目錄中的所有檔案和目錄的權限,對于所有人來說,使檔案具有讀寫權限,目錄具有讀寫執行權限

chmod -R a=rwX dir

隻有x位有大寫的權限,除此之外,大寫,還有ST

2.改變檔案的屬主和屬組

chown [option] [owner][:group] file

     -R 遞歸修改

      owner 隻修改屬主

      owner:Group 修改屬主和屬組

      :group 修改屬組

      Attention:“:”可以被.代替

chown --reference==rfile file 依據rfile的屬主屬組來設定file的屬主屬組

3.umask 參見 MyDocument/1/umask

4.特殊權限 SUID SGID Stickybit

1)安全上下文

前提:程序有屬主和屬組(但是沒有基本組和附加組的概念),檔案有屬主和屬組

(1)任何一個可執行程式檔案能不能啟動為程序,取決于發起者對程式檔案是否有執行權限

(2)執行檔案啟動為程序之後,其程序的屬主為發起者,程序的屬組為發起者的屬組

(3)程序通路檔案時的權限,取決于程序的發起者

(a)程序的發起者,就是檔案的屬主,則應用檔案屬主的權限

(b)程序的發起者,屬于檔案的屬組,則應用檔案屬組的權限

(c)應用檔案“其他”權限

2)可執行檔案上的SUID

(1)作用對象:二進制可執行檔案

(2)标記,二進制可執行檔案的屬主的執行權限位:

s:代表在設定SUID之前,這個二進制可執行檔案屬主有x權限

S:代表在設定SUID之前,這個二進制可執行檔案屬主沒有x權限

(3)意義:

任何一個可執行程式檔案能不能啟動為程序,取決于發起者對程式檔案是否有執行權限

執行檔案啟動為程序之後,其程序的屬主不是發起者,而是可執行程式檔案的屬主

以可執行二進制檔案的屬主身份啟動程序,而後程序通路的檔案的權限,都要看二進制可執行檔案的屬主,而非此二進制可執行檔案的發起者(目前使用者)

(4)設定在目錄上無意義

chmod u+/-s file

3)SGID權限

   (1)作用對象:二進制可執行檔案或目錄

 (2)标記,二進制可執行檔案或目錄的屬組的執行權限位:

s:代表在設定SGID之前,這個二進制可執行檔案或目錄的屬組有x權限

S:代表在設定SGID之前,這個二進制可執行檔案或目錄的屬組沒有x權限

(a)作用在二進制可執行檔案上

執行檔案啟動為程序之後,其程序的屬主不是發起者,而是可執行程式檔案的屬組

以可執行二進制檔案的屬主身份啟動程序,而後程序通路的檔案的權限,都要看二進制可執行檔案的屬組,而非此二進制可執行檔案的發起者(目前使用者)

(b)作用在目錄上

有這樣一種需求,有一組使用者加入了同一個組gp1,在磁盤上想建立一個目錄pub,作為gp1組的公共目錄,每個人都可以在這個目錄中,增删檔案,修改組内成員的檔案

mkdir pub

chown -R :gp1 pub

這樣組内成員都可以在pub中增删檔案,但建立的檔案的屬組還是自己的屬組,也隻能删除自己的檔案。

我們似乎可以這樣做

但是每每有人建立檔案或目錄,管理者都要執行此操作,實在顯得有些難堪

那麼這就是目錄上SGID的發揮的地方了

預設情況下,在某目錄中,使用者建立檔案或目錄時,其屬組為使用者的屬組

一旦某目錄被設定了SGID,則對此目錄有寫權限的使用者(可能是目錄的屬主,屬組使用者,或其他使用者)在此目錄中,建立的檔案或子目錄所屬的組為此目錄的屬組,而權限要應用對應使用者的umask,

Attention:子目錄繼承sgid,且目錄(也就是前面子目錄的父目錄)設定sgid之前,其目錄内已存在的檔案或目錄不會的屬組不會被修改,sgid權限也不會被修改(特指已存在的目錄)

(4)設定權限

chmod g+/-s DIR/file

4)Sticky

(1)作用對象:目錄

(2)标記目錄的其他使用者的執行權限位:

x:代表在設定sticky之前,這個目錄的屬組有x權限

X:代表在設定sticky之前,這個目錄的屬組沒有x權限

    通常,對于某目錄,使用者有寫權限,那麼這個使用者就可以删除該目錄下的任意檔案或目錄(包括root的檔案或目錄)

    在目錄上設定sticky位,隻有檔案或目錄的所有者或root可以删除檔案或目錄,但是否能修改為檔案和目錄,還是要看這個檔案和目錄對于使用者來說有無權限,

    Attention:設定了sticky位的目錄的子目錄不繼承sticky

    sticky設定在檔案上無意義

chmod o+/- dir

  5)特殊權限的數字表示法

  三個特殊權限的二進制位,組成了一個8進制數,在數字表示法中放在普通權限前面

  如chmod 4640 file 代表給檔案設定了suid

5.另外的特定屬性

chattr +i file 不能删除,改名和更改

dir  不能删除,改名和建立和删除檔案

chattr +a file/dir 隻能增加

lsattr 顯示這裡的特定屬性

Attention:這個屬性和cp --preserve=xattr中的xattr不是一回事