1. 程式人生 > >linux許可權管理操作

linux許可權管理操作

Linux的許可權操作與使用者,使用者組是兄弟關係。

 

一 許可權概述

 

總述:linux系統一般將檔案可存/取訪問的身份分為3個類別:owner,group,others,且3種身份各有read,write,execute等許可權。

 

  1. 許可權介紹

 

什麼是許可權?

在多使用者(可以不同時)計算機系統的管理中,許可權是指某個特定的使用者具有特定的系統資源使用權力,想是資料夾,特定系統指令的使用或儲存量的限制。

 

在linux中分別有讀,寫,執行許可權

 

讀許可權:

    對於資料夾來說,讀許可權影響使用者是否能夠列出目錄結構

    對於檔案來說,讀許可權影響使用者是否可以檢視檔案內容

 

寫許可權:

對於資料夾來說,寫許可權影響使用者是否可以在資料夾下“建立/刪除/複製到/移動到”文件

    對於檔案來說,寫許可權影響使用者是否可以編輯檔案內容

 

執行許可權:

    一般都是檔案來說,特別指令碼檔案

  1. 身份介紹

Owner身份(檔案所有者,預設為文件的建立者)

由於linux是多使用者,多工的作業系統,因此可能常常有多人同時在某臺主機上工作,但每個人均可在主機上設定檔案的許可權,讓其稱為個人的私密檔案,即個人所有者。因為設定了適當的檔案許可權,除本人(檔案所有者)之外的使用者無法檢視檔案內容。

 

例如某個MM給你發了一封email情書,你將情書轉換為檔案之後存檔在自己的主資料夾中。為了不讓別人看到情書的內容,你就能利用所有者的身份去設定檔案的適當許可權,這樣,即使你的情敵想偷看也是做不到的。

 

Group身份(與檔案所有者同組的使用者)

與檔案所有者同組最有用的功能就體現在多個團隊在同一臺主句上開發資源的時候

。例如主機上有A,B兩個團體,A中有a1,a2,a3三個成員,B中有b1,b2兩個成員,這兩個團體要共同完成一份報告F,由於設定了適當的許可權,A,B團體中的成員都能互相修改對方的資料,但是團體C的成員則不能修改F的內容,甚至連檢視的許可權都沒有。同時,團體的成員也能設定自己的私密檔案,讓團隊其他成員也讀取不了檔案資料。在linux中,每個賬戶支援多個使用者組。如使用者a1,b1即可屬於A使用者組,也能屬於B使用者組【主組和附加組】。

 

Others身份(其他人,相對於所有者)

這個是個相對概念。大哥比方,大明,二明,小明一價三兄弟住在統一間房,房產證上的登記者是大明(owner所有者),那麼,大明一家就是一個使用者組,這個組有大明,二明, 小明三個成員:另外有個人叫張三,和他們沒有關係,那麼這個張三就是其他人了。

 

同時,大明,二明,小明有各自的房間,三者雖然能自由進出各自的房間,但是小明不能讓大明看到自己的情書,日記等,這就是檔案所有者(使用者)的意義。

 

Root使用者(超級使用者)

在linux中,還有一個神一樣存在的使用者,這就是root使用者,因為在所有使用者中它擁有最大的許可權,所以管理者普通使用者。

 

  1. Linux的許可權介紹

要設定許可權,就需要知道檔案的一些基本屬性和許可權的分配規則。在linux中,ls命令常用來檢視檔案的屬性,用於顯示檔案的檔名和相關屬性。

 

#ls –l 路徑   【ls –l 等價於 ||】

 

標紅的部分就是linux的文件許可權屬性資訊

 

Linux中存在使用者,使用者組和其他人概念,各自有不同的許可權,對於一個檔案來說,其許可權具體分配如下:

 

十位字元表示含義:

第1位:表示文件型別,取值常見的有“d表示資料夾”,“-表示檔案”,“|表示軟連線”,“s表示套接字”等等;

第2-4位:表示文件的所有者的許可權情況,第2位表示讀許可權的情況,取值有r,-;第3位表示寫許可權的情況,w表示可寫,-表示不可寫,第4位表示執行許可權的情況,取值有x,-。

第5-7位:表示與所有者同在一個組的使用者的許可權情況,第5位表示讀許可權的情況,取值有r,-;第6位表示寫許可權的情況,w表示可寫,-表示不可寫,第7位表示執行許可權的情況,取值有x,-。

第8-10位:表示除了上面的前2部分的使用者之外的其他使用者的許可權情況,第8位表示讀許可權的情況,取值有r,-;第9位表示寫許可權的情況,w表示可寫,-表示不可寫,第10位表示執行許可權的情況,取值有x,-。

 

許可權分配中,均是rwx的三個引數組合,且位置順序不會變化。沒有對應許可權就用-代替。

 

例如:以下一個文件許可權是怎麼樣的?

 

  1. 資料夾型別
  2. 所有者:擁有全部許可權(讀寫執行)
  3. 同組使用者:可讀,可執行
  4. 其他使用者:可讀,可執行

 

二 許可權設定

 

語法:#chmod 選項 許可權模式 文件

注意事項:

    常用選項:

        -R:遞迴設定許可權(當文件型別為資料夾的時候)

    許可權模式:就是該文件需要設定的許可權資訊

    文件:可以是檔案,也可以是資料夾,可以是相對路徑也可以是絕對路徑。

注意點:如果想要給文件設定許可權,操作者要麼是root使用者,要麼是文件的所有者。

 

提權漏洞

 

  1. 字母形式

 

給誰設定:

    u:表示所有者身份owner(user)

    g:表示給所有者同組使用者設定(group)

    o:表示others,給其他使用者設定許可權

    a:表示all,給所有人(包括ugo部分)設定許可權

        如果在設定許可權的時候不指定給誰設定,則預設給所有使用者設定

許可權字元:

    r:讀

    w:寫

    x:表示執行

    -:表示沒有許可權

 

許可權分配方式:

    +:表示給具體的使用者新增許可權(相對當前)

    -:表示刪除使用者的許可權(相對當前)

    =:表示將許可權設定成具體的值(注重結果)

 

例如:需要給anaconda-ks.cfg檔案(-rw------)設定許可權,要求所有者擁有所有的許可權,同組使用者擁有讀和執行許可權,其他使用者只讀許可權。

答案:

  • #chmod  u+x,g+rx,o+r  anaconda-ks.cfg

 

  • #chmod  u=rwx,g=rx,o=r  anaconda-ks.cfg

提示:當文旦擁有執行許可權,則其顏色終端是綠色。

 

例如:如果anaconda-ks.cfg檔案什麼許可權都沒有,可以使用root使用者設定所有人都有執行許可權,則可以寫成:

  • #chmod +x  anaconda-ks.cfg
  • #chmod a=x anaconda-ks.cfg
  • #chmod a+x anaconda-ks.cfg
  1. 數字形式

經常會在一些技術性的網站上看到類似於#chmod 777 a.txt 這樣的一個許可權,這種形式稱之為數字形式許可權(777)

 

讀:r       4

寫:w       2

執行:x     1

 

例如:需要給anaconda-ks.cfg設定許可權,許可權要求所有者擁有全部許可權,同組使用者擁有讀執行許可權,其他使用者只讀。

全部許可權(u):讀+寫+執行=4+2+1=7

讀和執行(g):讀+執行=4+1=5

讀許可權(o):讀=4

由上得知許可權為:754

#chmod 754 anaconda-ks.cfg

面試題:用超級管理員設定文擋的許可權命令是#chmod –R 731 aaa,請問這個命令有沒有什麼不合理的地方?

擁有者:7=4+2+1=讀+寫+執行

同組使用者:3=2+1=寫+執行

其他使用者:1=1=執行

 

注意:在寫許可權的時候千萬不要設定類似於上面的這種“奇葩許可權”。如果一個許可權數字中但凡出現2與3的數字,則該許可權有不合理的情況。

 

  1. 注意事項

使用root使用者建立一個資料夾(/oo),許可權預設,許可權如下:

需要在oo目錄下建立檔案(oo/xx.txt),需要給777許可權:

 

切換到test使用者(不是文件所有者,也不是同組使用者,屬於other部分)

 

問題1:test使用者是否可以開啟oo/xx.txt檔案?【可以】

問題2:test使用者是否可以編輯oo/xx.txt檔案?【可以】

問題3:test使用者是否可以刪除oo/xx.txt檔案?【不可以,同樣還不允許建立檔案/資料夾,移動檔案,重新命名檔案】

在linux中,如果要刪除一個檔案,不是看檔案有沒有相應的許可權,而是看檔案所在的目錄是否有寫許可權,如果有才可以刪除。

 

三 屬主與屬組設定

屬主:所屬的使用者(檔案的主人)

屬組:所屬的使用者組

前面的那個root就是屬主

後面的那個root就是屬組

這兩項資訊在文件建立的時候會使用建立者的資訊(使用者名稱,使用者所屬的主組名稱)

 

如果有時候去刪除某個使用者,則該使用者對應的文件的屬主和屬組資訊就需要去修改。

 

  1. Chown(重點)

作用:更改文件的所屬使用者

語法:#chown –R  username 文件路徑

 

案例:將剛才root使用者建立的oo目錄,所有者更改為test

#chown  test  oo/

 

  1. Chgrp(瞭解)

作用:更改文件的所屬使用者組

語法:#chgrp  -R  groupname  文件的路徑

案例:將剛才root使用者建立的oo目錄,所有者更改為test,並且將所屬使用者組也給為test

#chgrp  test  oo/

 

思考:如何通過一個命令實現既可以更改所屬的使用者,也可以修改所屬的使用者組呢?

通過chown實現

    語法:#chown  -R  username:groupname  文件路徑

 

案例:要求只使用chown指令,將oo目錄的所屬使用者和使用者組改回成root,並且包含其子目錄