道阻且長,行則將至。埋頭苦幹,不鳴則已,一舉成名!加油騷年 掘金第一篇文章,望你們多多關照,謝謝各位前輩!html
鳥哥的Linux私房菜:「Linux最優秀的地方之一,就在於它的多用戶,多任務環境。而爲了讓各個用戶具備較保密的文件數據,所以文件的權限管理就變得很重要了。」linux
本文爲本身認真閱讀《鳥哥的Linux私房菜》對應內容後,總結記錄所得。若是有誤,還望指正!謝謝shell
Linux通常將文件可存取訪問的身份分爲3個類別,分別是:owner、group、others,且三種身份各有read、write、execute等權限。數據庫
本文將會圍繞如下方面展開: vim
用戶及用戶組的基本概念,以實際中一個家庭爲例,假設有一家人,家裏只有三兄弟,分別是王大毛、王二毛、王三毛這3我的,家庭的戶主是王大毛。簡要分析以下:windows
用戶、用戶組、其餘這幾個類別的特徵是什麼呢?數組
在Linux系統下,是有一個默認的路徑,默認文件來存放用戶和用戶組的相關信息,分別以下:安全
須要特別注意的是:這三個文件是Linux系統裏面帳號、密碼、用戶組信息的集中地,必定不要隨便刪除這三個文件。服務器
當咱們在Linux系統下,使用 ls -l 命令查看目錄文件時,會發現有不少的內容,我剛開始的時候瞭解的也不是很深刻,只是知道個大概,今天認認真真看了看書,作一個總結。編輯器
關於Linux下 ls 命令的相關參數,能夠參考菜鳥教程 - ls,部分命令參數截圖以下:
我參考本身的Ubuntu,拿以下幾個文件舉例:
列1 | 列2 | 列3 | 列4 | 列5 | 列6 | 列7 |
---|---|---|---|---|---|---|
drwxrwxrwx | 2 | zhaoc | zhaoc | 4096 | 10月 16 22:50 | Music |
drwxr-xr-x | 2 | root | root | 4096 | 3月 24 21:50 | vim |
-rw-r--r-- | 1 | root | root | 438 | 3月 15 15:49 | exports |
ls -l --full-time
複製代碼
有幾個經常使用的更改文件屬性、文件權限的命令。先列出來,在一一分析:
更改文件/目錄所屬用戶組,通常咱們較爲經常使用的就是使用 chgrp 命令。其實這個命令就是英文 change group 的縮寫;
須要注意的是,要被改變的組名必需要在 /etc/group 文件內存在才能夠,不然就會報錯。
基本的命令格式以下:
chgrp [-R] [所屬羣組] [文件或目錄]
[-R]:進行遞歸的持續更改,即修改此目錄及其下屬全部文件/目錄的羣組。
複製代碼
更爲詳細的信息能夠參考:菜鳥教程 - chgrp,裏邊有更爲詳盡的解釋及示例。
更改文件/目錄的全部者,通常經常使用的命令就是 chown 命令,也就是英文 change owner 的縮寫;
一樣須要注意的是,用戶必須是已經存在於系統中的帳號,也就是在 /etc/passwd 這個文件中有記錄的用戶名稱才能改變。
基本的命令格式以下:
chown [-R] [帳號名稱] [文件或目錄]
[-R]:進行遞歸的持續更改,即修改此目錄及其下屬全部文件/目錄的羣組。
複製代碼
若是須要同時更改文件的全部者和用戶組,可使用以下命令:
chown root:root filename
複製代碼
須要同時更改文件全部者及用戶組時,推薦使用冒號 「:」 ;若是須要單純的修改用戶組怎麼辦?可使用以下命令:
chown .root filename
複製代碼
此種狀況下,可使用英文的小數點 「.」
這個命令,能夠說是在實際使用中,最經常使用的一個命令之一。
基本的命令格式以下:
chmod [-R] [xyz] [文件或目錄]
[-R]:進行遞歸的持續更改,即修改此目錄及其下屬全部文件/目錄的羣組。
複製代碼
而這個命令,稍微大點來講,有兩種不一樣的用法,下邊分開描述。
經過直接使用數字方法,改變文件權限,在實際中是較爲經常使用的方法。簡單的來講,一個文件/目錄,有三種不一樣的身份,每種身份有三種不一樣的權限,按照二進制來劃分以下:
r | w | x | r | w | x | r | w | x |
---|---|---|---|---|---|---|---|---|
4 | 2 | 1 | 4 | 2 | 1 | 4 | 2 | 1 |
一樣,拿上述三個文件,作個分析
列1 | 列2 | 列3 | 列4 | 列5 | 列6 | 列7 |
---|---|---|---|---|---|---|
drwxrwxrwx | 2 | zhaoc | zhaoc | 4096 | 10月 16 22:50 | Music |
drwxr-xr-x | 2 | root | root | 4096 | 3月 24 21:50 | vim |
-rw-r--r-- | 1 | root | root | 438 | 3月 15 15:49 | exports |
若是我要將 Music 設置爲當前權限(rwxrwxrwx),應該怎麼作,分析,此文件擁有所有的權限,若是要設置爲此權限類型,應該使用以下命令:
chmod 777 Music
複製代碼
同理,若是要將 exports 設置爲當前權限(rw-r--r--),設置命令以下:
chmod 644 exports
複製代碼
總結一下經驗就是,使用數組類型改變文件權限時,將對應位權限轉換爲二進制數值,經過此命令設置文件權限便可。
所謂的符號類型,就是使用相似於字母的方式,來改變文件權限。咱們經常使用的身份有 user、group、others 這三種身份,所以 Linux 中經過 u g o 來表明三種身份,另外用 a 表明所有的身份;
具體的權限類型就能夠用 r w x 來表示;
操做方式能夠用以下三種方式表示:
用上述 「exports」 文件舉例,此文件的權限爲(rw-r--r--),咱們在設置時,可使用以下命令:
chmod u=rw,go=r exports
複製代碼
上述命令解釋過來,就是給文件全部者 「u」 ,設置可讀,可寫的權限;給用戶組和其餘用戶設置可讀權限。
須要注意的是:u=rw,go=r 這條命令,是連在一塊兒的,中間不能有任何空格
若是咱們不知道某個文件原來的屬性,只想給這個文件的每一個用戶增長一個可寫入的權限,就可使用以下命令:
chmod a+w filename
複製代碼
一樣的,若是是要給這個文件的全部用戶去掉可執行權限,則可使用以下命令:
chmod a-x filename
複製代碼
經過上面兩個示例,能夠知道,在 + - 狀態下,只要是沒有指定到的選項,則該權限「不會被變更」。
目錄與文件的權限,對於數據的安全是有很重要的做用的,下邊分開來介紹文件權限對於通常文件與目錄文件有何不一樣
文件是實際含有數據的地方,包括通常文本文件、數據庫內容文件、二進制可執行文件等,所以權限對於文件來講,有以下意義:
文件是存放實際數據的所在,目錄主要的內容是記錄文件名列表,文件名與目錄有強烈的關聯。因此對於目錄時,不一樣的權限也有不一樣的做用:
舉例說明目錄的可執行權限有什麼做用,假設有個目錄,權限以下:
drwxr--r-- 3 root root 4096 3月 24 21:50 filename
複製代碼
此時系統有個帳號名稱爲 zhaoc,這個帳號並無支持 root 用戶組,請問 zhaoc 對這個目錄有何權限?是否能夠切換到此目錄中?
回答:zhaoc 對此目錄僅具備 r 的權限,所以 zhaoc 能夠查詢此目錄下的文件名列表。由於 zhaoc 不具備 x 的權限,因此 zhaoc 並不能切換到此目錄內。這一點很重要
假設個人帳號名稱爲 zhaoc,個人主文件夾在 /home/zhaoc 這個路徑下,zhaoc對此目錄具備徹底的 [rwx] 權限,若是在此目錄下有一個文件 filename,改文件的權限以下:
-rwx------ 1 root root 4365 Sep 19 23:20 filename
複製代碼
問題:zhaoc 對此文件夾的權限是什麼?能否刪除此文件?
回答:由上述文件權限列表可知,此時 zhaoc 對此文件來講是 「others」的身份,所以這個文件他沒法讀,沒法編輯,也沒法執行,也就是說他沒法變更這個文件的內容。可是,因爲這個文件在他的主文件夾下,他在此目錄下具備 [rwx] 的完整權限,所以對於 filename 這個 「文件名」 來講,zhaoc 是可以 「刪除」 的,也就是說 zhaoc 這個用戶可以刪除 「filename」 這個文件。
結合我目前工做經驗來看,在實際工做中,文件權限的重要性在開發服務器上會獲得明顯體現。好比我剛到公司的時候,全部文件權限都是隻讀;目錄權限爲可讀、可執行;也就是說,我對服務器上的任何東西都沒有寫入權限;這樣很明顯的一個好處就是,防止新人不當心刪除服務器的文件,給公司形成損失。
等到後來我在公司待了一段時間,熟悉了一些東西、須要接觸項目開發的時候,就給我開放了對服務器特定目錄的可寫操做,保證我能夠在此文件夾內,進行代碼修改、提交等操做。
本篇文章就是基於書本內容的一個閱讀,與本身深刻了解後的一個筆記總結。如有錯誤之處還望指正,但願對您能有幫助!感受不錯能夠留個贊哈,方便更多的人看到,謝謝各位!