引言
相信很多同學在Linux上執行命令或者寫入文件甚至讀取文件的時候都會遇到一個錯誤“Permission denied”,大家一般都會使用“chmod 777”這個命令來消除錯誤獲取權限,那么大家思考過為什么是777這個數字嗎,這個數字是如何得出的?看完這篇文章后相信大家就會對Linux下的權限相關有了非常詳細的了解,也可以針對各種情況獲取相對應的權限。
Linux下的用戶與群組的概念
大家應該或少的都知道Linux是一個允許多用戶的操作系統,那么大家有沒有了解過Linux下的用戶分為哪幾種呢?說到這里,我們就要提一句話“在Linux中任何東西都是文件”,所以可以看出,Linux是以文件為核心的一個操作系統,那么回到用戶類型的問題上來,答案就是Linux的用戶分為三種,分別是owner、group、others,翻譯成中文就是所有者、群組、其他。針對每個文件都有着owner、group、others的三個身份所對應的權限。
Linux下的文件權限類型以及如何查看文件的權限
相信大家都使用過ls命令吧,有時候大家在執行ls -al的時候有沒有想過每個文件前面那一大段是什么意思呢?,現在我們就來解析一下。舉個例子
這里大概的簡要說明一下
第一欄表示文件的類型以及權限,第二欄表示有多少文件鏈接到這個節點,第三欄表示文件的所有者,第四欄表示文件的group,第五欄則是文件的大小,第六欄就文件的最后修改時間,接下來就是文件的名稱
我們這篇文章的關注重點是第一欄,舉個例子,拿main.go來說,第一欄文件類型和權限的表示是"-rw-r--r--",這是什么意思呢,我們將這一串字符拆解成第一個、第2-4個、第5-7個以及第8-10個字符,先說說第一個字符,表示的是文件的類型,"-"表示這個是一個文件,“d”表示這是一個目錄,“l”則表示這是一個鏈接文件,當然還有其他的類型,這里我們暫且不關注。
接下來就是拆分的三個字符串,他們是什么意思呢?還記得我們上面講過的owner、group、others嗎,這三串字符就是分別表示的這個文件對應這三個身份的的權限。下面我們來講解一下單個權限字符對應的意思
rwx是什么意思
上面我們看到,有的文件權限是rwx,有的卻是rw-,有的是r--,這是什么意思呢?我們先來說一下rwx三個字符分別代表什么,“r”表示可讀,即read。“w”表示可寫,即“write”。“x”表示可執行。在Linux下一組完整的權限必須是三個字符同時出現的。並且他們的順序是不會變的,這是什么意思呢,表示不管在任何時候,我們都應該三個三個的去看權限,如果沒有某個權限則需要用“-”代替,現在我們知道了,第一欄的第一個字符表示的是文件的類型,接下來每三個字符表示對應身份的權限,拿main.go舉例,他是一個文件,owner擁有讀寫權限沒有執行權限,group有用可讀的權限沒有寫以及執行權限,others也是擁有可讀權限沒有寫及執行權限。
如何更改文件的權限
還記的我們上面的三種身份嗎,那么對應的,更改一個文件的權限也有三種方式,分別是:
chgrp :改變文件所屬群組
chown :改變文件擁有者
chmod :改變文件的權限
這里我們只說chmod,回到文章的標題來,777這個數字是什么出現的呢。首先我們要知道個權限對應的分值,r:4、w:2、x:1,權限就是對應分值的相加,比如rwx就是4+2+1=7,rw-就是4+2+0=6,現在大家明白777是什么意思了嗎?就是分別為三種身份賦予rwx的權限,777這個數字就是這么算出來的。
結語
相信大家通過這篇文章會對Linux的用戶以及權限有一個了解,以后在工作學習中也可以按照自己的需求制定權限啦,而不是一味地使用777。
轉:https://segmentfault.com/a/1190000018634232