相信不少同窗在Linux上執行命令或者寫入文件甚至讀取文件的時候都會遇到一個錯誤「Permission denied」,你們通常都會使用「chmod 777」這個命令來消除錯誤獲取權限,那麼你們思考過爲何是777這個數字嗎,這個數字是如何得出的?看完這篇文章後相信你們就會對Linux下的權限相關有了很是詳細的瞭解,也能夠針對各類狀況獲取相對應的權限。學習
你們應該或少的都知道Linux是一個容許多用戶的操做系統,那麼你們有沒有了解過Linux下的用戶分爲哪幾種呢?說到這裏,咱們就要提一句話「在Linux中任何東西都是文件」,因此能夠看出,Linux是以文件爲核心的一個操做系統,那麼回到用戶類型的問題上來,答案就是Linux的用戶分爲三種,分別是owner、group、others,翻譯成中文就是全部者、羣組、其餘。針對每一個文件都有着owner、group、others的三個身份所對應的權限。spa
相信你們都使用過ls命令吧,有時候你們在執行ls -al的時候有沒有想過每一個文件前面那一大段是什麼意思呢?,如今咱們就來解析一下。舉個例子操作系統
這裏大概的簡要說明一下
第一欄表示文件的類型以及權限,第二欄表示有多少文件連接到這個節點,第三欄表示文件的全部者,第四欄表示文件的group,第五欄則是文件的大小,第六欄就文件的最後修改時間,接下來就是文件的名稱翻譯
咱們這篇文章的關注重點是第一欄,舉個例子,拿main.go來講,第一欄文件類型和權限的表示是"-rw-r--r--",這是什麼意思呢,咱們將這一串字符拆解成第一個、第2-4個、第5-7個以及第8-10個字符,先說說第一個字符,表示的是文件的類型,"-"表示這個是一個文件,「d」表示這是一個目錄,「l」則表示這是一個連接文件,固然還有其餘的類型,這裏咱們暫且不關注。
接下來就是拆分的三個字符串,他們是什麼意思呢?還記得咱們上面講過的owner、group、others嗎,這三串字符就是分別表示的這個文件對應這三個身份的的權限。下面咱們來說解一下單個權限字符對應的意思ip
上面咱們看到,有的文件權限是rwx,有的倒是rw-,有的是r--,這是什麼意思呢?咱們先來講一下rwx三個字符分別表明什麼,「r」表示可讀,即read。「w」表示可寫,即「write」。「x」表示可執行。在Linux下一組完整的權限必須是三個字符同時出現的。而且他們的順序是不會變的,這是什麼意思呢,表示無論在任什麼時候候,咱們都應該三個三個的去看權限,若是沒有某個權限則須要用「-」代替,如今咱們知道了,第一欄的第一個字符表示的是文件的類型,接下來每三個字符表示對應身份的權限,拿main.go舉例,他是一個文件,owner擁有讀寫權限沒有執行權限,group有用可讀的權限沒有寫以及執行權限,others也是擁有可讀權限沒有寫及執行權限。字符串
還記的咱們上面的三種身份嗎,那麼對應的,更改一個文件的權限也有三種方式,分別是:
chgrp :改變文件所屬羣組
chown :改變文件擁有者
chmod :改變文件的權限
這裏咱們只說chmod,回到文章的標題來,777這個數字是什麼出現的呢。首先咱們要知道個權限對應的分值,r:四、w:二、x:1,權限就是對應分值的相加,好比rwx就是4+2+1=7,rw-就是4+2+0=6,如今你們明白777是什麼意思了嗎?就是分別爲三種身份賦予rwx的權限,777這個數字就是這麼算出來的。it
相信你們經過這篇文章會對Linux的用戶以及權限有一個瞭解,之後在工做學習中也能夠按照本身的需求制定權限啦,而不是一味地使用777。io