一、Linux權限介紹
在linux中的每一個文件或目錄都包含有訪問權限,這些訪問權限決定了誰能訪問和如何訪問這些文件和目錄。用戶可以利用Linux系統提供的chmod命令來重新設定不同的訪問權限。也可以利用chown命令來更改某個文件或目錄的所有者。利用chgrp命令來更改某個文件或目錄的用戶組。
可以通過以下三種方式限制方位權限:
- 只用戶自己訪問:
- 允許一個預先指定的用戶組中的用戶訪問
- 允許系統中的任何用戶訪問
同時,用戶能夠控制一個文件或目錄的訪問程度,一個文件或目錄可能有讀、寫以及執行權限;當創建一個文件時,系統會自動賦予文件的所有者讀和寫的權限,這樣可以允許所有者能夠顯示文件內容和修改文件。文件所有者可以將這些權限改變為任何他想指定的權限。
每一個用戶都有它自身的讀、寫和執行權限。
- 第一套權限控制訪問自己的文件權限,即所有者權限。
- 第二套權限控制用戶組訪問其中一個用戶的文件的權限。
- 第三套權限控制其他所有用戶訪問一個用戶的文件的權限,這三套權限賦予用戶不同類型(即所有者、用戶組和其他用戶)的讀、寫及執行權限就構成了一個有9種類型的權限組。
有三種不同類型的用戶可對文件或目錄進行訪問:文件所有者,同組用戶、其他用戶。
所有者一般是文件的創建者。所有者可以允許同組用戶有權訪問文件,還可以將文件的訪問權限賦予系統中的其他用戶。在這種情況下,系統中每一位用戶都能訪問該用戶擁有的文件或目錄。
查看文件權限:ls -l file
?
bash-3.2# ls -l test.html
-rw-r--r-- 1 tongkun staff 208 12 26 21:18 test.html
說明:
- 橫線代表空許可
- r代表只讀
- w代表寫
- x代表可執行
注意這里有10個位置,第一個字符制定文件類型。如果第一個字符是橫線,表示一個非目錄文件,如果是d,表示是一個目錄。
-rw-r--r-- 說明:
test.html是一個普通文件,對屬主有讀寫權限,對屬同組用戶有只讀權限,對其他用戶有只讀權限。
二、使用chmod的字母和數字改變文件或目錄的訪問權限
- chmod命令用于改變文件活目錄的訪問權限
- chmod有兩種用法。一種是包含字母和操作符表達式的文字設定法;另一種是包含數字的數字設定法。
- ?
1. 文字設定法
chmod [who] [+ | - | =] [mode] 文件名
命令中各選項的含義是:
- u 表示用戶(user),即文件和目錄的所有者
- g 表示同組用戶(group),即與文件屬主有相同id的所有用戶
- o 表示其他用戶
- a 表示所有用戶,他是系統的默認值
操作符:
- + 添加某個權限
- - 取消某個權限
- = 賦予給定權限并取消其他所有權限(如果有的話)
mode所表示的權限可用于下注字符的任意組合:
- r 可讀
- w 可寫
- x 可執行
- X 只有目標文件對某些用戶是可執行的或該目標文件是目錄時才追加x 屬性。
- s 在文件執行時把進程的屬主或組ID置為該文件的文件屬主。方式“u+s”設置文件的用戶ID位,“g+s”設置組ID位。
- t 保存程序的文本到交換設備上。
- u 與文件屬主擁有一樣的權限。
- g 與和文件屬主同組的用戶擁有一樣的權限。
- o 與其他用戶擁有一樣的權限。
文件名:以空格分開的要改變權限的文件列表,支持通配符。
在一個命令行中可給出多個權限方式,其間用逗號隔開。例如:chmod g+r,o+r example
2. 數字設定法
用數字表示的屬性的含義:0表示沒有權限,1表示可執行權限,2表示可寫權限,4表示可讀權限,然后將其相加。所以數字屬性的格式應為3個從0到7的八進制數,其順序是(u)(g)(o)。
例如,如果想讓某個文件的屬主有“讀/寫”二種權限,需要把4(可讀)+2(可寫)=6(讀/寫)。
數字設定法的一般形式為:
chmod [mode] 文件名?
文件和目錄的權限表示,是用rwx這三個字符來代表所有者、用戶組和其他用戶的權限。有時候,字符似乎過于麻煩,因此還有另外一種方法是以數字來表示權限,而且僅需三個數字。
- r:對應數值4
- w:對應數值2
- x:對應數值1
- -:對應數值0
只是包rwx看成二進制數。有則1表示,無則0表示。所以 -rwx r-x r--則表示為111 101 100 十進制數為754
自己 同組用戶 其他用戶
可讀 是 是 是
可寫 是 是
可執行
那么,我們先根據上表得到權限串為:rw-rw-r--,那么轉換成二進制數就是110 110 100,再每三位轉換成為一個十進制數,就得到664,因此我 們執行命令:
例如,我們想讓a.txt這個文件的權限為:
自己 同組用戶 其他用戶
可讀 是 是 是
可寫 是 是
可執行
那么,我們先根據上表得到權限串為:rw-rw-r--,那么轉換成二進制數就是110 110 100,再每三位轉換成為一個十進制數,就得到664,因此我 們執行命令:
chmod 644 a.txt
如果一個文件的權限全部放開,則權限數字即為 777
chmod 777 a.txt
如果想一次修改某個目錄下所有文件的權限,包括子目錄中的文件權限也要修改,要使用參數-R表示啟動遞歸處理。
chomd -R 777 /Hexo
則Hexo目錄下所有文件對所有用戶授予讀寫和執行的權限。
三、是用chown更改文件的擁有者權限
chown將指定文件的擁有者改為指定的用戶或組,用戶可以是用戶名或者用戶ID;組可以是組名或者組ID;文件是以空格分開的要改變權限的文件列表,支持通配符。系統管理員經常使用chown命令,在將文件拷貝到另一個用戶的名錄下之后,讓用戶擁有使用該文件的權限。
命令說明
1.命令格式:
chown [選項]... [所有者][:[組]] 文件...
2.命令功能:
通過chown改變文件的擁有者和群組。在更改文件的所有者或所屬群組時,可以使用用戶名稱和用戶識別碼設置。普通用戶不能將自己的文件改變成其他的擁有者。其操作權限一般為管理員。
3.命令參數:
必要參數:
- -c 顯示更改的部分的信息
- -f 忽略錯誤信息
- -h 修復符號鏈接
- -R 處理指定目錄以及其子目錄下的所有文件
- -v 顯示詳細的處理信息
- -deference 作用于符號鏈接的指向,而不是鏈接文件本身
選擇參數:
- --reference=<目錄或文件> 把指定的目錄/文件作為參考,把操作的文件/目錄設置成參考文件/目錄相同擁有者和群組
- --from=<當前用戶:當前群組> 只有當前用戶和群組跟指定的用戶和群組相同時才進行改變
- --help 顯示幫助信息
- --version 顯示版本信息
命令實例
實例1. 改變擁有者和群組
命令:chown tongkun:everyone Mysql日志分析.md
說明:更改擁有者為tongkun, 群組為everyone群組
實例2. 更改目錄的擁有者和群組
命令:chown -R tongkun:everyone dir
說明:更改目錄以及子目錄子文件的擁有者和群組