CentOS學習筆記--檔案許可權概念

來源:互聯網
上載者:User

標籤:style   blog   http   ar   io   color   os   使用   sp   

Linux 檔案許可權概念

當你的螢幕出現了『Permission deny』的時候,不要擔心,『肯定是許可權設定錯誤』啦!(以下節選自 鳥哥的 Linux 私房菜 第六章、Linux 的檔案許可權與目錄配置 2. Linux檔案許可權概念)

Linux檔案屬性

在你以root的身份登入Linux之後,下達『 ls -al 』看看,會看到底下的幾個咚咚:

[[email protected] ~]# ls -altotal 64dr-xr-x---.  2 root root  4096 Dec 18 09:28 .dr-xr-xr-x. 22 root root  4096 Nov 14 16:08 ..-rw-------.  1 root root  1098 Nov  3 19:57 anaconda-ks.cfg-rw-------.  1 root root 12288 Dec 18 09:28 .anaconda-ks.cfg.swp-rw-------.  1 root root  1517 Dec 18 10:36 .bash_history-rw-r--r--.  1 root root    18 May 20  2009 .bash_logout-rw-r--r--.  1 root root   176 May 20  2009 .bash_profile-rw-r--r--.  1 root root   176 Sep 23  2004 .bashrc-rw-r--r--.  1 root root   100 Sep 23  2004 .cshrc-rw-r--r--.  1 root root  8726 Nov  3 19:57 install.log-rw-r--r--.  1 root root  3190 Nov  3 19:56 install.log.syslog-rw-r--r--.  1 root root   129 Dec  4  2004 .tcshrc[1]         [2][3]  [4]   [5]  [6]          [7][許可權]  [串連][擁有者][群組][檔案大小][修改日期][檔案]

  • 第一欄代表這個檔案的類型與許可權(permission):

    • 第一個字元代表這個檔案是『目錄、檔案或連結檔案等等』:
      • 當為[ d ]則是目錄,例如上表檔名為『.』的那一行;
      • 當為[ - ]則是檔案,例如上表檔名為『install.log』那一行;
      • 若是[ l ]則表示為連結檔(link file);
      • 若是[ b ]則表示為裝置檔案裡面的可供儲存的介面裝置(可隨機存取裝置);
      • 若是[ c ]則表示為裝置檔案裡面的序列埠裝置,例如鍵盤、滑鼠(一次性讀取裝置)
    • 接下來的字元中,以三個為一組,且均為『rwx』 的三個參數的組合。其中,[ r ]代表可讀(read)、[ w ]代表可寫(write)、[ x ]代表可執行(execute)。 要注意的是,這三個許可權的位置不會改變,如果沒有許可權,就會出現減號[ - ]而已。
      • 第一組為『檔案擁有者的許可權』,以『install.log』那個檔案為例, 該檔案的擁有者可以讀寫,但不可執行;
      • 第二組為『同群組的許可權』;
      • 第三組為『其他非本群組的許可權』。
  • 第二欄表示有多少檔名連結到此節點(i-node):
  • 第三欄表示這個檔案(或目錄)的『擁有者帳號』
  • 第四欄表示這個檔案的所屬群組
  • 第五欄為這個檔案的容量大小,預設單位為bytes;
  • 第六欄為這個檔案的建檔日期或者是最近的修改日期:
  • 第七欄為這個檔案的檔名。
    • 這個欄位就是檔名了。比較特殊的是:如果檔名之前多一個『 . 』,則代表這個檔案為『隱藏檔』。
如何改變檔案屬性與許可權

常用於群組、擁有者、各種身份的許可權之修改的指令,如下所示:

  • chgrp :改變檔案所屬群組
  • chown :改變檔案擁有者
  • chmod :改變檔案的許可權, SUID, SGID, SBIT等等的特性
改變所屬群組, chgrp

改變一個檔案的群組真是很簡單的,直接以chgrp來改變即可,咦!這個指令就是change group的縮寫嘛!這樣就很好記了吧! ^_^。不過,請記得,要被改變的組名必須要在/etc/group檔案記憶體在才行,否則就會顯示錯誤!

[[email protected] ~]# chgrp [-R] dirname/filename ...選項與參數:-R : 進行遞迴(recursive)的持續變更,亦即連同次目錄下的所有檔案、目錄     都更新成為這個群組之意。常常用在變更某一目錄內所有的檔案之情況。範例:[root@www ~]# chgrp users install.log  <==改變檔案群組[[email protected] ~]# ls -l-rw-r--r--  1 root users 68495 Jun 25 08:53 install.log[root@www ~]# chgrp testing install.logchgrp: invalid group name `testing‘ <== 發生錯誤訊息囉~找不到這個群組名~
發現了嗎?檔案的群組被改成users了,但是要改成testing的時候, 就會發生錯誤~注意喔!改變檔案擁有者, chown

如何改變一個檔案的擁有者呢?很簡單呀!既然改變群組是change group,那麼改變擁有者就是change owner囉!BINGO!那就是chown這個指令的用途,要注意的是, 使用者必須是已經存在系統中的帳號,也就是在/etc/passwd 這個檔案中有紀錄的使用者名稱稱才能改變。

[[email protected] ~]# chown [-R] 帳號名稱 檔案或目錄[[email protected] ~]# chown [-R] 帳號名稱:組名 檔案或目錄選項與參數:-R : 進行遞迴(recursive)的持續變更,亦即連同次目錄下的所有檔案都變更範例:將install.log的擁有者改為bin這個帳號:[root@www ~]# chown bin install.log[[email protected] ~]# ls -l-rw-r--r--  1 bin  users 68495 Jun 25 08:53 install.log範例:將install.log的擁有者與群組改回為root:[root@www ~]# chown root:root install.log[[email protected] ~]# ls -l-rw-r--r--  1 root root 68495 Jun 25 08:53 install.log
改變許可權, chmod

檔案許可權的改變使用的是chmod這個指令,但是,許可權的設定方法有兩種, 分別可以使用數字或者是符號來進行許可權的變更。我們就來談一談:

  • 數字類型改變檔案許可權
    Linux檔案的基本許可權就有九個,分別是owner/group/others三種身份各有自己的read/write/execute許可權, 先複習一下剛剛上面提到的資料:檔案的許可權字元為:『-rwxrwxrwx』, 這九個許可權是三個三個一組的!其中,我們可以使用數字來代表各個許可權,各許可權的分數對照表如下:
    r:4
    w:2
    x:1
    每種身份(owner/group/others)各自的三個許可權(r/w/x)分數是需要累加的,例如當許可權為: [-rwxrwx---] 分數則是:
    owner = rwx = 4+2+1 = 7
    group = rwx = 4+2+1 = 7
    others= --- = 0+0+0 = 0
    所以等一下我們設定許可權的變更時,該檔案的許可權數字就是770啦!變更許可權的指令chmod的文法是這樣的:
    [[email protected] ~]# chmod [-R] xyz 檔案或目錄選項與參數:xyz : 就是剛剛提到的數字類型的許可權屬性,為 rwx 屬性數值的相加。-R : 進行遞迴(recursive)的持續變更,亦即連同次目錄下的所有檔案都會變更
  • 如果要將許可權變成『 -rwxr-xr-- 』呢?那麼許可權的分數就成為 [4+2+1][4+0+1][4+0+0]=754 囉!所以你需要下達『 chmod 754 filename』。 另外,在實際的系統運作中最常發生的一個問題就是,常常我們以vi編輯一個shell的文字批次檔後,他的許可權通常是 -rw-rw-r-- 也就是664, 如果要將該檔案變成可執行檔,並且不要讓其他人修改此一檔案的話, 那麼就需要-rwxr-xr-x這樣的許可權,此時就得要下達:『 chmod 755 test.sh 』的指令囉!
    另外,如果有些檔案你不希望被其他人看到,那麼應該將檔案的許可權設定為例如:『-rwxr-----』,那就下達『chmod 740 filename 』吧!

  • 符號類型改變檔案許可權
    還有一個改變許可權的方法呦!從之前的介紹中我們可以發現,基本上就九個許可權分別是(1)user (2)group (3)others三種身份啦!那麼我們就可以藉由u, g, o來代表三種身份的許可權!此外, a 則代表 all 亦即全部的身份!那麼讀寫的許可權就可以寫成r, w, x!也就是可以使用底下的方式來看:


    chmod

    u
    g
    o
    a

    +(加入)
    -(除去)
    =(設定)

    r
    w
    x



    檔案或目錄
  • 來實作一下吧!假如我們要『設定』一個檔案的許可權成為『-rwxr-xr-x』時,基本上就是:

    • user (u):具有可讀、可寫、可執行檔許可權;
    • group 與 others (g/o):具有可讀與執行的許可權。

    所以就是:
    [[email protected] ~]# chmod  u=rwx,go=rx  .bashrc# 注意喔!那個 u=rwx,go=rx 是連在一起的,中間並沒有任何空格![[email protected] ~]# ls -al .bashrc-rwxr-xr-x  1 root root 395 Jul  4 11:45 .bashrc

那麼假如是『 -rwxr-xr-- 』這樣的許可權呢?可以使用『 chmod u=rwx,g=rx,o=r filename 』來設定。此外,如果我不知道原先的檔案屬性,而我只想要增加.bashrc這個檔案的每個人均可寫入的許可權, 那麼我就可以使用:

[[email protected] ~]# ls -al .bashrc-rwxr-xr-x  1 root root 395 Jul  4 11:45 .bashrc[root@www ~]# chmod  a+w  .bashrc[[email protected] ~]# ls -al .bashrc-rwxrwxrwx  1 root root 395 Jul  4 11:45 .bashrc

而如果是要將許可權去掉而不更動其他已存在的許可權呢?例如要拿掉全部人的可執行許可權,則:

[[email protected] ~]# chmod  a-x  .bashrc[[email protected] ~]# ls -al .bashrc-rw-rw-rw-  1 root root 395 Jul  4 11:45 .bashrc

知道 +, -, = 的不同點了嗎?對啦! + 與 – 的狀態下,只要是沒有指定到的項目,則該許可權『不會被變動』, 例如上面的例子中,由於僅以 – 拿掉 x 則其他兩個保持當時的值不變!多多實作一下,你就會知道如何改變許可權囉! 這在某些情況底下很好用的~舉例來說,你想要教一個朋友如何讓一個程式可以擁有執行的許可權, 但你又不知道該檔案原本的許可權為何,此時,利用『chmod a+x filename』 ,就可以讓該程式擁有執行的許可權了。是否很方便?

目錄與檔案之許可權意義:

現在我們知道了Linux系統內檔案的三種身份(擁有者、群組與其他人),知道每種身份都有三種許可權(rwx), 已知道能夠使用chown, chgrp, chmod去修改這些許可權與屬性,當然,利用ls -l去觀察檔案也沒問題。那麼,這些檔案許可權對於一般檔案與目錄檔案有何不同呢? 有大大的不同啊!

許可權對檔案的重要性

檔案是實際含有資料的地方,包括一般文字檔、資料庫內容檔案、二進位可執行檔(binary program)等等。 因此,許可權對於檔案來說,他的意義是這樣的:

  • r (read):可讀取此一檔案的實際內容,如讀取文字檔的文字內容等;
  • w (write):可以編輯、新增或者是修改該檔案的內容(但不含刪除該檔案);
  • x (execute):該檔案具有可以被系統執行的許可權。

那個可讀(r)代表讀取檔案內容是還好瞭解,那麼可執行(x)呢?這裡你就必須要小心啦! 因為在Windows底下一個檔案是否具有執行的能力是藉由『 副檔名 』來判斷的, 例如:.exe, .bat, .com 等等,但是在Linux底下,我們的檔案是否能被執行,則是藉由是否具有『x』這個許可權來決定的!跟檔名是沒有絕對的關係的!

至於最後一個w這個許可權呢?當你對一個檔案具有w許可權時,你可以具有寫入/編輯/新增/修改檔案的內容的許可權, 但並不具備有刪除該檔案本身的許可權!對於檔案的rwx來說, 主要都是針對『檔案的內容』而言,與檔案檔名的存在與否沒有關係喔!因為檔案記錄的是實際的資料嘛!

許可權對目錄的重要性

檔案是存放實際資料的所在,那麼目錄主要是儲存啥玩意啊?目錄主要的內容在記錄檔案名稱列表,檔案名稱與目錄有強烈的關連啦! 所以如果是針對目錄時,那個 r, w, x 對目錄是什麼意義呢?

  • r (read contents in directory):
    表示具有讀取目錄結構列表的許可權,所以當你具有讀取(r)一個目錄的許可權時,表示你可以查詢該目錄下的檔案名稱資料。 所以你就可以利用 ls 這個指令將該目錄的內容列表顯示出來!
  • w (modify contents of directory):
    這個可寫入的許可權對目錄來說,是很了不起的! 因為他表示你具有異動該目錄結構列表的許可權,也就是底下這些許可權:
    • 建立新的檔案與目錄;
    • 刪除已經存在的檔案與目錄(不論該檔案的許可權為何!)
    • 將已存在的檔案或目錄進行更名;
    • 搬移該目錄內的檔案、目錄位置。

    總之,目錄的w許可權就與該目錄底下的檔案名稱異動有關就對了啦!
  • x (access directory):
    咦!目錄的執行許可權有啥用途啊?目錄只是記錄檔案名稱而已,總不能拿來執行吧?沒錯!目錄不可以被執行,目錄的x代表的是使用者能否進入該目錄成為工作目錄的用途! 所謂的工作目錄(work directory)就是你目前所在的目錄啦!舉例來說,當你登入Linux時, 你所在的家目錄就是你當下的工作目錄。而變換目錄的指令是『cd』(change directory)囉!
檔案種類:

我們在剛剛提到使用『ls -l』觀察到第一欄那十個字元中,第一個字元為檔案的類型。 除了常見的一般檔案(-)與目錄檔案(d)之外,還有哪些種類的檔案類型呢?

  • 正規檔案(regular file ):
    就是一般我們在進行存取的類型的檔案,在由 ls -al 所顯示出來的屬性方面,第一個字元為 [ - ],例如 [-rwxrwxrwx ]。另外,依照檔案的內容,又大略可以分為:
    • 純文字檔(ASCII):這是Linux系統中最多的一種檔案類型囉, 稱為純文字檔是因為內容為我們人類可以直接讀到的資料,例如數字、字母等等。 幾乎只要我們可以用來做為設定的檔案都屬於這一種檔案類型。 舉例來說,你可以下達『 cat ~/.bashrc 』就可以看到該檔案的內容。
    • 二進位檔案(binary):Linux當中的可執行檔(scripts, 文字型批次檔不算)就是這種格式的啦~ 舉例來說,剛剛下達的指令cat就是一個binary file。
    • 資料格式檔案(data): 有些程式在運作的過程當中會讀取某些特定格式的檔案,那些特定格式的檔案可以被稱為資料檔案 (data file)。舉例來說,我們的Linux在使用者登入時,都會將登入的資料記錄在 /var/log/wtmp那個檔案內,該檔案是一個data file,他能夠透過last這個指令讀出來! 但是使用cat時,會讀出亂碼~因為他是屬於一種特殊格式的檔案。瞭乎?
  • 目錄(directory):
    就是目錄囉~第一個屬性為 [ d ],例如 [drwxrwxrwx]。
  • 連結檔(link):
    就是類似Windows系統底下的捷徑啦! 第一個屬性為 [ l ](英文L的小寫),例如 [lrwxrwxrwx] ;
  • 裝置與裝置檔案(device):
    與系統周邊及儲存等相關的一些檔案, 通常都集中在/dev這個目錄之下!通常又分為兩種:
    • 區塊(block)裝置檔 :就是一些儲存資料, 以提供系統隨機存取的介面裝置,舉例來說,硬碟與磁碟片等就是啦! 你可以隨機的在硬碟的不同區塊讀寫,這種裝置就是成組裝置囉!你可以自行查一下/dev/sda看看, 會發現第一個屬性為[ b ]喔!
    • 字元(character)裝置檔案:亦即是一些序列埠的介面裝置, 例如鍵盤、滑鼠等等!這些裝置的特色就是『一次性讀取』的,不能夠截斷輸出。 舉例來說,你不可能讓滑鼠『跳到』另一個畫面,而是『滑動』到另一個地方啊!第一個屬性為 [ c ]。
  • 資料介面檔案(sockets):
    既然被稱為資料介面檔案, 想當然爾,這種類型的檔案通常被用在網路上的資料承接了。我們可以啟動一個程式來監聽用戶端的要求, 而用戶端就可以透過這個socket來進行資料的溝通了。第一個屬性為 [ s ], 最常在/var/run這個目錄中看到這種檔案類型了。
  • 資料輸送檔案(FIFO, pipe):
    FIFO也是一種特殊的檔案類型,他主要的目的在解決多個程式同時存取一個檔案所造成的錯誤問題。 FIFO是first-in-first-out的縮寫。第一個屬性為[p] 。

CentOS學習筆記--檔案許可權概念

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.