咨詢電(diàn)話(huà):023-88959644    24小(xiǎo)時(shí)服務熱線:400-023-8809
NEWS CENTER ·
新聞動态
關注中技(jì)互聯 關注前沿

 析linux文件權限

發表日期:2013-05-23    文章編輯:王未    浏覽次數(shù):10    标簽:

www.zjcoo.com

   一、文件和(hé)目錄權限概述

  在linux中的每一個(gè)文件或目錄都包含有(yǒu)訪問權限,這些(xiē)訪問權限決定了誰能訪問和(hé)如何訪問這些(xiē)文件和(hé)目錄。

  通(tōng)過設定權限可(kě)以從以下三種訪問方式限制(zhì)訪問權限:隻允許用戶自己訪問;允許一個(gè)預先指定的用戶組中的用戶訪問;允許系統中的任何用戶訪問。同時(shí),用戶能夠控制(zhì)一個(gè)給定的文件或目錄的訪問程度。一個(gè)文件活目錄可(kě)能有(yǒu)讀、寫及執行(xíng)權限。當創建一個(gè)文件時(shí),系統會(huì)自動地賦予文件所有(yǒu)者讀和(hé)寫的權限,這樣可(kě)以允許所有(yǒu)者能夠顯示文件內(nèi)容和(hé)修改文件。文件所有(yǒu)者可(kě)以将這些(xiē)權限改變為(wèi)任何他想指定的權限。一個(gè)文件也許隻有(yǒu)讀權限,禁止任何修改。文件也可(kě)能隻有(yǒu)執行(xíng)權限,允許它想一個(gè)程序一樣執行(xíng)。

  三種不同的用戶類型能夠訪問一個(gè)目錄或者文件:所有(yǒu)着、用戶組或其他用戶。所有(yǒu)者就是創建文件的用戶,用戶是所有(yǒu)用戶所創建的文件的所有(yǒu)者,用戶可(kě)以允許所在的用戶組能訪問用戶的文件。通(tōng)常,用戶都組合成用戶組,例如,某一類或某一項目中的所有(yǒu)用戶都能夠被系統管理(lǐ)員歸為(wèi)一個(gè)用戶組,一個(gè)用戶能夠授予所在用戶組的其他成員的文件訪問權限。最後,用戶也将自己的文件向系統內(nèi)的所有(yǒu)用戶開(kāi)放,在這種情況下,系統內(nèi)的所有(yǒu)用戶都能夠訪問用戶的目錄或文件。在這種意義上(shàng),系統內(nèi)的其他所有(yǒu)用戶就是other用戶類。

  每一個(gè)用戶都有(yǒu)它自身的讀、寫和(hé)執行(xíng)權限。第一套權限控制(zhì)訪問自己的文件權限,即所有(yǒu)者權限。第二套權限控制(zhì)用戶組訪問其中一個(gè)用戶的文件的權限。第三套權限控制(zhì)其他所有(yǒu)用戶訪問一個(gè)用戶的文件的權限,這三套權限賦予用戶不同類型(即所有(yǒu)者、用戶組和(hé)其他用戶)的讀、寫及執行(xíng)權限就構成了一個(gè)有(yǒu)9種類型的權限組。

  筆者們可(kě)以用-l參數(shù)的ls命令顯示文件的詳細信息,其中包括權限。如下所示:

  yekai@kebao:/media/sda5/軟件壓縮/Linux$ ls -lh

  總用量 191M

  -rwxrwx--- 1 root plugdev 18M 2007-02-28 18:05 ActionCube_v0.92.tar.bz2

  static/file/mysql-4.0.26-win32

  -rwxrwx--- 1 root plugdev 7.4M 2007-04-25 02:16 stardict-oxford-gb-2.4.2.tar.bz2

  -rwxrwx--- 1 root plugdev 102M 2007-05-01 18:22 tremulous-1.1.0-installer.x86.run

  -rwxrwx--- 1 root plugdev 4.9M 2007-04-30 14:32 wqy-bitmapfont-0.8.1-7_all.deb.bin

  當執行(xíng)ls -l 或 ls -al 命令後顯示的結果中,最前面的第2~10個(gè)字符是用來(lái)表示權限。第一個(gè)字符一般用來(lái)區(qū)分文件和(hé)目錄:

  d:表示是一個(gè)目錄,事實上(shàng)在ext2fs中,目錄是一個(gè)特殊的文件。

  -:表示這是一個(gè)普通(tōng)的文件。

  l: 表示這是一個(gè)符号鏈接文件,實際上(shàng)它指向另一個(gè)文件。

  b、c:分别表示區(qū)塊設備和(hé)其他的外圍設備,是特殊類型的文件。

  s、p:這些(xiē)文件關系到系統的數(shù)據結構和(hé)管道(dào),通(tōng)常很(hěn)少(shǎo)見到。

  下面詳細介紹一下權限的種類和(hé)設置權限的方法。

  二、一般權限

  第2~10個(gè)字符當中的每3個(gè)為(wèi)一組,左邊三個(gè)字符表示所有(yǒu)者權限,中間(jiān)3個(gè)字符表示與所有(yǒu)者同一組的用戶的權限,右邊3個(gè)字符是其他用戶的權限。這三個(gè)一組共9個(gè)字符,代表的意義如下:

  r(Read,讀取):對文件而言,具有(yǒu)讀取文件內(nèi)容的權限;對目錄來(lái)說,具有(yǒu)浏覽目錄的權限。

  w(Write,寫入):對文件而言,具有(yǒu)新增、修改文件內(nèi)容的權限;對目錄來(lái)說,具有(yǒu)删除、移動目錄內(nèi)文件的權限。

  x(eXecute,執行(xíng)):對文件而言,具有(yǒu)執行(xíng)文件的權限;對目錄了來(lái)說該用戶具有(yǒu)進入目錄的權限。

  -:表示不具有(yǒu)該項權限。

  下面舉例說明(míng):

  -rwx------: 文件所有(yǒu)者對文件具有(yǒu)讀取、寫入和(hé)執行(xíng)的權限。

  -rwxr―r--: 文件所有(yǒu)者具有(yǒu)讀、寫與執行(xíng)的權限,其他用戶則具有(yǒu)讀取的權限。

  -rw-rw-r-x: 文件所有(yǒu)者與同組用戶對文件具有(yǒu)讀寫的權限,而其他用戶僅具有(yǒu)讀取和(hé)執行(xíng)的權限。

  drwx--x--x: 目錄所有(yǒu)者具有(yǒu)讀寫與進入目錄的權限,其他用戶近能進入該目錄,卻無法讀取任何數(shù)據。

  Drwx------: 除了目錄所有(yǒu)者具有(yǒu)完整的權限之外,其他用戶對該目錄完全沒有(yǒu)任何權限。

  每個(gè)用戶都擁有(yǒu)自己的專屬目錄,通(tōng)常集中放置在/home目錄下,這些(xiē)專屬目錄的默認權限為(wèi)rwx------:

  表示目錄所有(yǒu)者本身具有(yǒu)所有(yǒu)權限,其他用戶無法進入該目錄。執行(xíng)mkdir命令所創建的目錄,其默認權限為(wèi)rwxr-xr-x,用戶可(kě)以根據需要修改目錄的權限。

  此外,默認的權限可(kě)用umask命令修改,用法非常簡單,隻需執行(xíng)umask 777 命令,便代表屏蔽所有(yǒu)的權限,因而之後建立的文件或目錄,其權限都變成000,依次類推。通(tōng)常root帳号搭配umask命令的數(shù)值為(wèi)022、027和(hé) 077,普通(tōng)用戶則是采用002,這樣所産生(shēng)的權限依次為(wèi)755、750、700、775。有(yǒu)關權限的數(shù)字表示法,後面将會(huì)詳細說明(míng)。

  用戶登錄系統時(shí),用戶環境就會(huì)自動執行(xíng)rmask命令來(lái)決定文件、目錄的默認權限。

  三、特殊權限

  其實文件與目錄設置不止這些(xiē),還(hái)有(yǒu)所謂的特殊權限。由于特殊權限會(huì)擁有(yǒu)一些(xiē)“特權”,因而用戶若無特殊需求,不應該啓用這些(xiē)權限,避免安全方面出現嚴重漏洞,造成黑(hēi)客入侵,甚至摧毀系統!!!

  s或S(SUID,Set UID):可(kě)執行(xíng)的文件搭配這個(gè)權限,便能得(de)到特權,任意存取該文件的所有(yǒu)者能使用的全部系統資源。請(qǐng)注意具備SUID權限的文件,黑(hēi)客經常利用這種權限,以SUID配上(shàng)root帳号擁有(yǒu)者,無聲無息地在系統中開(kāi)扇後門(mén),供日後進出使用。

  s或S(SGID,Set GID):設置在文件上(shàng)面,其效果與SUID相同,隻不過将文件所有(yǒu)者換成用戶組,該文件就可(kě)以任意存取整個(gè)用戶組所能使用的系統資源。

  T或T(Sticky):/tmp和(hé) /var/tmp目錄供所有(yǒu)用戶暫時(shí)存取文件,亦即每位用戶皆擁有(yǒu)完整的權限進入該目錄,去浏覽、删除和(hé)移動文件。

  因為(wèi)SUID、SGID、Sticky占用x的位置來(lái)表示,所以在表示上(shàng)會(huì)有(yǒu)大(dà)小(xiǎo)寫之分。加入同時(shí)開(kāi)啓執行(xíng)權限和(hé)SUID、SGID、Sticky,則權限表示字符是小(xiǎo)寫的:

  -rwsr-sr-t 1 root root 4096 6月 23 08:17 conf

  如果關閉執行(xíng)權限,則表示字符會(huì)變成大(dà)寫:

  -rwSr-Sr-T 1 root root 4096 6月 23 08:17 conf

  四、使用文件管理(lǐ)器(qì)來(lái)改變文件或目錄的權限:

  如果用戶要改變一個(gè)文件目錄的權限,右擊要改變權限的文件或者目錄,在彈出的快捷菜單中選擇“屬性”,系統将打開(kāi)屬性對話(huà)框

  在“屬性”對話(huà)框中,單擊“權限”标簽,就會(huì)打開(kāi)“權限”選項卡。

  在這裏你(nǐ)可(kě)以修改文件或者目錄的所有(yǒu)者、組群和(hé)其他用戶的權限,而且可(kě)以設置特殊權限

  對于特殊權限,最好不要設置,不然會(huì)帶來(lái)很(hěn)嚴重的安全問題。

  當然,在這裏你(nǐ)也可(kě)以改變文件和(hé)目錄的所有(yǒu)者和(hé)所屬組。

  五、使用chmod和(hé)數(shù)字改變文件或目錄的訪問權限

  文件和(hé)目錄的權限表示,是用rwx這三個(gè)字符來(lái)代表所有(yǒu)者、用戶組和(hé)其他用戶的權限。有(yǒu)時(shí)候,字符似乎過于麻煩,因此還(hái)有(yǒu)另外一種方法是以數(shù)字來(lái)表示權限,而且僅需三個(gè)數(shù)字。

  r: 對應數(shù)值4

  w: 對應數(shù)值2

  x:對應數(shù)值1

  -:對應數(shù)值0

  數(shù)字設定的關鍵是mode的取值,一開(kāi)始許多(duō)初學者會(huì)被搞糊塗,其實很(hěn)簡單,筆者們将rwx看成二進制(zhì)數(shù),如果有(yǒu)則有(yǒu)1表示,沒有(yǒu)則有(yǒu)0表示,那(nà)麽rwx r-x r- -則可(kě)以表示成為(wèi):

  111 101 100

  再将其每三位轉換成為(wèi)一個(gè)十進制(zhì)數(shù),就是754。

  例如,筆者們想讓a.txt這個(gè)文件的權限為(wèi):

  自己 同組用戶 其他用戶

  可(kě)讀 是 是 是

  可(kě)寫 是 是

  可(kě)執行(xíng)

  那(nà)麽,筆者們先根據上(shàng)表得(de)到權限串為(wèi):rw-rw-r--,那(nà)麽轉換成二進制(zhì)數(shù)就是110 110 100,再每三位轉換成為(wèi)一個(gè)十進制(zhì)數(shù),就得(de)到664,因此筆者 們執行(xíng)命令:

  [root@localhost ~]# chmod 664 a.txt

  按照上(shàng)面的規則,rwx合起來(lái)就是4+2+1=7,一個(gè)rwxrwxrwx權限全開(kāi)放的文件,數(shù)值表示為(wèi)777;而完全不開(kāi)放權限的文件“---------”其數(shù)字表示為(wèi)000。下面舉幾個(gè)例子:

  -rwx------:等于數(shù)字表示700。

  -rwxr―r--:等于數(shù)字表示744。

  -rw-rw-r-x:等于數(shù)字表示665。

  drwx―x―x:等于數(shù)字表示711。

  drwx------:等于數(shù)字表示700。

  在文本模式下,可(kě)執行(xíng)chmod命令去改變文件和(hé)目錄的權限。筆者們先執行(xíng)ls -l 看看目錄內(nèi)的情況:

  [root@localhost ~]# ls -l

  總用量 368

  -rw-r--r-- 1 root root 12172 8月 15 23:18 conkyrc.sample

  drwxr-xr-x 2 root root 48 9月 4 16:32 Desktop

  -r--r--r-- 1 root root 331844 10月 22 21:08 libfreetype.so.6

  drwxr-xr-x 2 root root 48 8月 12 22:25 MyMusic

  -rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth0

  -rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth1

  -rwxr-xr-x 1 root root 512 11月 5 08:08 net.lo

  drwxr-xr-x 2 root root 48 9月 6 13:06 vmware

  可(kě)以看到當然文件conkyrc.sample文件的權限是644,然後把這個(gè)文件的權限改成777。執行(xíng)下面命令

  [root@localhost ~]# chmod 777 conkyrc.sample

  然後ls -l看一下執行(xíng)後的結果:

  [root@localhost ~]# ls -l

  總用量 368

  -rwxrwxrwx 1 root root 12172 8月 15 23:18 conkyrc.sample

  drwxr-xr-x 2 root root 48 9月 4 16:32 Desktop

  -r--r--r-- 1 root root 331844 10月 22 21:08 libfreetype.so.6

  drwxr-xr-x 2 root root 48 8月 12 22:25 MyMusic

  -rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth0

  -rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth1

  -rwxr-xr-x 1 root root 512 11月 5 08:08 net.lo

  drwxr-xr-x 2 root root 48 9月 6 13:06 vmware

  可(kě)以看到conkyrc.sample文件的權限已經修改為(wèi)rwxrwxrwx

  如果要加上(shàng)特殊權限,就必須使用4位數(shù)字才能表示。特殊權限的對應數(shù)值為(wèi):

  s或 S (SUID):對應數(shù)值4。

  s或 S (SGID):對應數(shù)值2。

  t或 T :對應數(shù)值1。

  用同樣的方法修改文件權限就可(kě)以了

  例如:

  [root@localhost ~]# chmod 7600 conkyrc.sample

  [root@localhost ~]# ls -l

  總用量 368

  -rwS--S--T 1 root root 12172 8月 15 23:18 conkyrc.sample

  drwxr-xr-x 2 root root 48 9月 4 16:32 Desktop

  -r--r--r-- 1 root root 331844 10月 22 21:08 libfreetype.so.6

  drwxr-xr-x 2 root root 48 8月 12 22:25 MyMusic

  -rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth0

  -rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth1

  -rwxr-xr-x 1 root root 512 11月 5 08:08 net.lo

  drwxr-xr-x 2 root root 48 9月 6 13:06 vmware

  加入想一次修改某個(gè)目錄下所有(yǒu)文件的權限,包括子目錄中的文件權限也要修改,要使用參數(shù)-R表示啓動遞歸處理(lǐ)。

  例如:

  [root@localhost ~]# chmod 777 /home/user 注:僅把/home/user目錄的權限設置為(wèi)rwxrwxrwx

  [root@localhost ~]# chmod -R 777 /home/user 注:表示将整個(gè)/home/user目錄與其中的文件和(hé)子目錄的權限都設置為(wèi)rwxrwxrwx

  六、使用命令chown改變目錄或文件的所有(yǒu)權

  文件與目錄不僅可(kě)以改變權限,其所有(yǒu)權及所屬用戶組也能修改,和(hé)設置權限類似,用戶可(kě)以通(tōng)過圖形界面來(lái)設置,或執行(xíng)chown命令來(lái)修改。

  筆者們先執行(xíng)ls -l看看目錄情況:

  [root@localhost ~]# ls -l

  總用量 368

  -rwxrwxrwx 1 root root 12172 8月 15 23:18 conkyrc.sample

  drwxr-xr-x 2 root root 48 9月 4 16:32 Desktop

  -r--r--r-- 1 root root 331844 10月 22 21:08 libfreetype.so.6

  drwxr-xr-x 2 root root 48 8月 12 22:25 MyMusic

  -rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth0

  -rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth1

  -rwxr-xr-x 1 root root 512 11月 5 08:08 net.lo

  drwxr-xr-x 2 root root 48 9月 6 13:06 vmware

  可(kě)以看到conkyrc.sample文件的所屬用戶組為(wèi)root,所有(yǒu)者為(wèi)root。

  執行(xíng)下面命令,把conkyrc.sample文件的所有(yǒu)權轉移到用戶user:

  [root@localhost ~]# chown user conkyrc.sample

  [root@localhost ~]# ls -l

  總用量 368

  -rwxrwxrwx 1 user root 12172 8月 15 23:18 conkyrc.sample

  drwxr-xr-x 2 root root 48 9月 4 16:32 Desktop

  -r--r--r-- 1 root root 331844 10月 22 21:08 libfreetype.so.6

  drwxr-xr-x 2 root root 48 8月 12 22:25 MyMusic

  -rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth0

  -rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth1

  -rwxr-xr-x 1 root root 512 11月 5 08:08 net.lo

  drwxr-xr-x 2 root root 48 9月 6 13:06 vmware

  要改變所屬組,可(kě)使用下面命令:

  [root@localhost ~]# chown :users conkyrc.sample

  [root@localhost ~]# ls -l

  總用量 368

  -rwxrwxrwx 1 user users 12172 8月 15 23:18 conkyrc.sample

  drwxr-xr-x 2 root root 48 9月 4 16:32 Desktop

  -r--r--r-- 1 root root 331844 10月 22 21:08 libfreetype.so.6

  drwxr-xr-x 2 root root 48 8月 12 22:25 MyMusic

  -rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth0

  -rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth1

  -rwxr-xr-x 1 root root 512 11月 5 08:08 net.lo

  drwxr-xr-x 2 root root 48 9月 6 13:06 vmware

  要修改目錄的權限,使用-R參數(shù)就可(kě)以了,方法和(hé)前面一樣。

重慶中技互聯網信息咨詢有限公司 www.zjcoo.com

如沒特殊注明(míng),文章均為(wèi)中技(jì)互聯原創,轉載請(qǐng)注明(míng)來(lái)自www.zjcoo.com
相關新聞

CopyrightZJCOO technology Co., LTD. All Rights Reserved.    

渝ICP 備11003429号

  • qq客服
  • 公衆号
  • 手機版
  • 新浪微博