為什麼許可權管理會用124三個數字?
我們知道,1,2,4這三個數字可以表示7以內的所有數字。例如:
1: 12: 23: 1 + 24: 45: 1 + 46: 2 + 47: 1 + 2 + 4那麼,如果要表示15以內的所有數字,還需要增加哪個數?你可能要想半天,才知道,需要增加一個8。
但是,如果我們從二進位制的視角來看這些數字,就會發現實際上問題非常簡單:
1: 0012: 0104: 100如果我們令可執行許可權對應001,可寫許可權對應010,可讀許可權對應100。那麼,可讀又可寫對應110,也就是十進位制的6。可寫又可執行對應011也就是十進位制的3。顯然,111為可讀可寫可執行,對應十進位制的7。
如果我們要增加一個控制能否修改的引數,那麼我們就可以用高4位來表示,可修改:1000。
由於 Linux 中,檔案的許可權分別需要為檔案所有者、跟所有者在同一個使用者組的其他人以及不在同一組的其他人設定。如果不能讀,不能寫,不能執行,就是二進位制的000對應十進位制的0.
對於 SSH 私鑰這種極度敏感的檔案,顯然只能檔案所有者可讀可寫,於是它的許可權為:110 000 000也就是600了。
如果要對所有登入系統的人都可讀可寫可修改,顯然檔案許可權為111 111 111自然就是十進位制的777。
網上有一些垃圾文章,會引誘你把檔案許可權設定為777。只要你看到這種文章,那麼這個文章的作者一定是一個水貨。
請大家記住這樣一句話:對於一個合理設計的軟體、程式或者專案,如果某個地方需要你把許可權設定為777才能使用,那麼一定是你之前有地方搞錯了!一定是你出錯了。任何讓你給檔案設定許可權為777的人,不是蠢,就是壞。
最後給大家出一道思考題,使用二進位制位來表示許可權有什麼好處?
最新評論