
我知道chmod 777
允許讀,寫, 和執行為了使用者,團體, 和其他的
但如果我這麼做呢chmod 7
?
難道只是rwx
為了使用者?
答案1
拉梅什的回答是完全準確的,但我想插話並提供文件模式的更深入的解釋。
755
雖然像和 之類的數字777
可能看起來很特殊並且僅對文件模式有意義,但它們實際上非常基本。
這些數字實際上是八進制數。十進制數以 10 為基數,十六進制數以 16 為基數,二進制以 2 為基數,八進制數以 8 為基數。這意味著當你數數時,你就走1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20 ...
。所以這個數字007
,只是八進制7
。八進制數755
只是一個數字,相當於493
十進制。
現在如何區分八進制數和任何其他基數是八進制數以 為前綴0
。所以說755
是八進制,你真的應該稱之為0755
。此chmod
指令僅假設所有輸入數字都是八進制,因為這是引用檔案模式最常見的方式。
現在,為什麼檔案模式要使用八進位?首先我們要了解模式只是一個位元掩碼,如下所示:
111111111111 - 12 binary bits
============
1 - Other execute
1 - Other write
1 - Other read
1 - Group execute
1 - Group write
1 - Group read
1 - User execute
1 - User write
1 - User read
1 - Sticky bit
1 - Set group ID
1 - Set user ID
請注意,「其他」、「群組」和「使用者」各有 3 位。二進制111
是7
,它是最高的個位數八進制值。因此,透過使用八進位編號,其他群組和使用者權限中的每一個都會獲得一個數字,再加上 Sticky+setuid+setgid 的額外數字。
那麼,我們可以回到你最初的問題「什麼是chmod 7
」?
好吧,現在我們知道它只是一個八進制數,並且它只是一個位元掩碼,我們可以弄清楚這一點。八進制7
是二進制111
。使用上述位元位置,我們可以確定這設定了所有 3 個「其他」位,授予「其他」執行、讀取和寫入存取權限。由於這只是一個數字,因此所有其他位元均為 0,並且未設定。
答案2
恰恰相反。它將授予rwx
許可其他的。
touch samplefile
ls -l samplefile
-rw-rw-r-- 1 ramesh ramesh 0 Oct 16 22:29 samplefile
現在,執行命令後,我得到的輸出為:
chmod 7 samplefile
ls -l samplefile
-------rwx 1 ramesh ramesh 0 Oct 16 22:29 samplefile
從 的手冊頁來看chmod
,
數字模式為 1 到 4 個八進制數字 (0-7),透過將值 4、2 和 1 的位元相加得出。 省略的數字被假定為前導零。
現在,我們可以透過執行命令來驗證相同的內容,
chmod 47 samplefile
ls -l samplefile
----r--rwx 1 ramesh ramesh 0 Oct 16 22:29 samplefile
正如我們所看到的,chmod 47
在文件上使用將給出讀授權團體和讀,寫和執行授權其他的。