寫在前面node
咱們都知道Linux是一個支持多用戶、多任務的系統,這也是它最優秀的特性,便可能同時有不少人都在系統上進行工做,因此千萬不要強制關機,同時,爲了保護每一個人的隱私和工做環境,針對某一個文檔(文件、目錄),Linux系統定義了三種身份,分別是擁有者(owner)、羣組(group)、其餘人(others),每一種身份又對應三種權限,分別是可讀(readable)、可寫(writable)、可執行(excutable),經過這樣的設計就能夠保證每一個使用者所擁有數據的隱密性。shell
文檔屬性安全
使用命令ls -al --full-time,或者此命令的簡寫ll能夠查看文件或者目錄的全部屬性。以下:ide
文檔屬性設計
使用命令ls -al --full-time,或者此命令的簡寫ll能夠查看文件或者目錄的全部屬性。以下:3d
從上面能夠看到,每一行都有7列,分別是:對象
第一列
共10位,第1位表示文檔類型,d表示目錄,-表示文件,l表示連接文件,d表示可隨機存取的設備,如U盤等,c表示一次性讀取設備,如鼠標、鍵盤等。後9位,依次對應三種身份所擁有的權限,身份順序爲:owner、group、others,權限順序爲:readable、writable、excutable。如:-r-xr-x---的含義爲當前文檔是一個文件,擁有者可讀、可執行,同一個羣組下的用戶,可讀、可寫,其餘人沒有任何權限。
第二列
表示連接數,表示有多少個文件連接到inode號碼。
第三列
表示擁有者
第四列
表示所屬羣組
第五列
表示文檔容量大小,單位字節
第六列
表示文檔最後修改時間,注意不是文檔的建立時間哦
第七列
表示文檔名稱。以點(.)開頭的是隱藏文檔
變動擁有者(owner)blog
位置遞歸
etc/passwd索引
注意:必須是該位置下已存在的賬號。也就是在/etc/passwd中有記錄的擁有者才能改變。
語法
chown [-R] [賬號名稱] [文件或目錄]
chown [-R] [賬號名稱]:[羣組名稱] [文件或目錄]
備註:此命令也能夠順便變動文檔羣組,但仍是建議使用chgrp命令來變動文檔羣組。
選項
-R 遞歸變動,即連同次目錄下的全部文件(夾)都要變動。
用法
chown daemon test 變動文件夾test帳號爲daemon。
chown daemon:root test 變動文件夾test羣組爲root。
chown root.users test 變動文件夾帳號爲root,羣組爲users
chown .root test 單獨變動羣組爲root
備註:雖然也能夠在擁有者與羣組間加小數點(.),但爲了不有的同窗命名中帶點,故仍是建議使用冒號「:」來隔開擁有者與羣組,避免誤判。
變動羣組(group)
位置
etc/group
備註:從這裏能夠查看到全部羣組
語法
chgrp [-options] [羣組名] [文檔路徑]
備註:關於options,能夠經過man chgrp、info chgrp、chgrp --help等命令查詢詳細用法。
用法
chgrp -R users test 改變test文件夾及其全部子文件(夾)的羣組爲users。
注意:羣組名稱不在位置內,將會報錯invalid group。
變動權限
Linux文檔的基本權限就三個,分別是read/write/execute,加上身份owner/group/others也一共也只有九個。權限變動的方式有2種,分別是符號法和數字法。
符號法
分別使用u,g,o來表明三種身份,a表示所有身份;分別使用r、w、x表示三種權限;分別使用+、-、=表示操做行爲
語法
chmod | u g o a | +(加入) -(除去) =(設置) | r w x | 文檔路徑
設置權限(=)
變動目錄test的權限爲任何人均可讀、寫、執行。
chmod u=rwx,g=rwx,o=rwx test
或
chmod ugo=rwx test
或
chmod a=rwx test
去掉權限(-)
去掉目錄test執行權限
chmod u-x,g-x,o-x test
或
chmod ugo-x test
或
chmod a-x test
備註:執行權限(x),對目錄而已就是其餘用戶可否cd test成爲工做目錄。
添加權限(+)
增長目錄test執行權限
chmod u+x,g+x,o+x test
或
chmod ugo+x test
或
chmod a+x test
備註:很熟悉吧,若是咱們編寫完一個shell文件test.sh後,經過chmod a+x test.sh就添加了文件執行權限。
數字法
顧名思義,就是使用數字來表明權限,r,w,x分別爲4,2,1。三種權限累加就能夠得出一種身份的權限。
設置目錄test的權限爲任何人均可讀、寫、執行。
chmod 777 test
設置目錄test的權限爲任何人均可讀、寫。
chmod 666 test
賦予一個shell文件test.sh可執行權限,擁有者可讀、寫、執行,羣組帳號和其餘人可讀、執行。
chmod 755 test
備註:有沒有發現數字法更簡單啊!!!
文件和目錄權限差別
文檔權限對於文件和目錄有巨大的差別
文件
針對的是該文件內容
readable 可讀取該文件的實際內容
writable 能夠編輯、新增或者是修改該文件的內容
executable 有能夠被系統執行的權限
備註:具備w權限不併不表明能夠刪除文件,刪除文件是目錄權限控制的範圍。那是由於目錄的相關權限及屬性是記錄到目錄的inode,而目錄下的全部文件的名稱和對應的索引文件(inode)號碼又是記錄到目錄所屬的block中,因此當咱們讀取某個文件時,必須先讀到目錄的inode,而後再讀取目錄的block信息,拿到待讀取文件的索引信息,即具體存儲在哪一個block上,最後才能讀到文件內容(這塊內容,須要先理解Linux的文件系統,好比Ext2/Ext3/Ext4,後面咱們會詳細介紹) ------ 先記住文件權限僅僅對文件內容有效。
示例說明
使用root身份讀取目錄test001下的文件test001-1
查看目錄物理全路徑:pwd
列出有關的目錄和文件:ll -di / /root /root/test001 /root/test001/test001-1
經過man ls 查看-i,全稱inode,即 print the index number of each file
目錄/的inode: 經過掛載點的信息找到inode號碼爲2的block。
目錄/的block:經過上一步驟找到的block,找到root/目錄的inode號碼爲131073。
目錄root/的inode:讀取編號爲131073的inode找到目錄的block。
目錄root/的block:經過上一步驟找到的block,找到root/test001/目錄的inode號碼爲527524。
目錄root/test001/的inode:讀取編號爲527524的inode找到目錄的block。
目錄root/test001/的block:經過上一步驟找到的block,找到文件test001-1目錄的inode號碼爲527526。
文件test001-1的inode:讀取編號爲527526的inode找到文件的block。
文件test001-1的block:經過上一步驟找到的block,讀取文件內容。
因爲使用的是root身份,具備讀取任何文檔的權限。若是,使用通常帳號,上面每個步驟的讀取,還會匹配權限。
目錄
針對的是該目錄下的文件對象
readable 具備讀取目錄結構清單的權限,便可以經過ls命令,查詢該目錄清單。
writable 具備變更該目錄結構清單的權限,便可以建立、遷移、刪除、改名該目錄下的文件。
executable 具有進入該目錄的權限,便可以經過cd命令,成爲工做目錄。
備註:從上面能夠得出,開放目錄給任何人瀏覽時,至少須要賦予r或x權限。讀取目錄文件內容,至少須要目錄權限x和文件權限r。
總結
Linux的每一個文檔能夠分別針對三種身份賦予rwx權限;chgrp命令變動文件羣組,chmod命令變動文件權限,chown變動文件擁有者;那麼如何運用這些屬性和權限來保證每一個租戶數據的安全性和隱密性,請看下一篇,Linux如何管理文檔多租戶進行實戰練習。