Почему система разрешения Unix использует 1 2 3 4... значения?
Почему не всего 3 бита; немного для каждого чтения установки пишут и выполняются. например,
( rwx ) 110 => r=1 w=1 x=0
Это более компактно для использования целых чисел от 1-7, которые являются суммой следующих трех восьмеричных чисел представления разрешения, 4 (чтение), 2 (запись), и 1 (выполняются) добавленный вместе, потому что все полномочия Unix могут быть представлены одним целым числом в пределах от 1 - 7 вместо того, чтобы использовать 3 числа для представления полномочий Unix.
Number Octal Permission Representation Ref 0 No permission --- 1 Execute permission --x 2 Write permission -w- 3 Execute and write permission: 1 (execute) + 2 (write) = 3 -wx 4 Read permission r-- 5 Read and execute permission: 4 (read) + 1 (execute) = 5 r-x 6 Read and write permission: 4 (read) + 2 (write) = 6 rw- 7 All permissions: 4 (read) + 2 (write) + 1 (execute) = 7 rwx
Поскольку у нас есть эти 3 бита (r/w/x) 3 раза, однажды для пользователя (владелец) полномочия, однажды для полномочий группы и однажды для полномочий для всех других.
Именно поэтому, например, в выводе ls -l
, где Вы получаете текстовое представление полномочий, это смотрит, например, как -rwxr-xr-x
(первое -
просто указание на тип файла, т.е. является ли это каталогом или не).
(На самом деле существует даже еще три бита - SUID, SGID и Липкие - но можно искать те более усовершенствованные полномочия самостоятельно, если Вам интересно.)
К представлению rwx
это точно использует 3 (0 или 1) бит:
Decimal | Binary
--------------------
1 | 001
2 | 010
3 | 011
4 | 100
5 | 101
6 | 110
7 | 111
Поэтому, когда Вы используете "3", Вы на самом деле устанавливаете биты на: 011
равный -wx
, точно как Вы думаете об этом. Однако не забывайте о SUID, SGID и липком бите как дополнительный бит.