2011-10-05 17 views
5

我想知道他們是怎麼想出通過使用數字來設置使用chmod的權限的。例如:通過單個號碼檢索多個信息?

1 is for execute 
2 is for write 
4 is for read 

那些支付的任何款項給一個獨特的權限:

2+4 = 6 lets you write and read. 
1+4 = 5 lets you execute and read 
1+2+4 = 7 lets you execute, read and write 

是否有一個算法來呢?舉個例子,我有10個項目,我想給一個人一個號碼,通過這個號碼,這個人可以告訴我選擇了哪些項目。

+0

爲什麼接近的選票?這對我來說似乎是一個完全合法的問題。 –

+0

@AasmundEldhuset:這是一個完全合法的問題,但對我來說似乎更適合於其他SE網站。我會選擇Unix,但這不是一種選擇,所以SU。 – derobert

+0

哈哈!這只是二進制數字。歡迎來到電腦世界。 – Shahbaz

回答

4

Binary system。即您分別代表1,2,4,8,16等等,每個都有0或1個數字。最後一個數字代表2^0=1,第二最後一位代表2^1=2,爲2^2=4下一個數字,在未來的2^3=8等。現在

,你每個數字動作(讀/ EX /寫)相關聯。 (或多或少)令人驚訝的事實如下:如果你不只有兩個選項(即如果你不只是有真或假),但如果你有更多的選擇,你可以適應這種模式ternary system。此外,您可以將此模式適用於任何基地。人類系統的工作原理爲基礎10

+0

你讓我給予好評,但你真的應該對這個-e.g。擴大,顯示該位被映射到權限(用戶,組和其他,同時還爲設置ID和粘滯位)。 – derobert

+0

@derobert:這個問題並不是關於Unix權限的問題。它只是受它的啓發。問題是關於將幾個布爾值表示爲一個整數的一般想法。 –

+0

@AasmundEldhuset:夠公平的,我把它看作更多的Unix問題。我想一些編輯可能是按順序的。另外,你可能想要提到這不僅是base-2的獨特之處,你可以例如編碼10個項目,就像OP提到的base-10(這實際上是一個很好的例子,因爲每個人都知道base-10)...... (編輯:看起來像你) – derobert