Почему система разрешения Unix использует 1 2 3 4 значения … вместо 1 или 0?

Почему система разрешения Unix использует 1 2 3 4... значения?

Почему не всего 3 бита; немного для каждого чтения установки пишут и выполняются. например,

( rwx ) 110 => r=1 w=1 x=0
1
задан 31 August 2017 в 14:13

3 ответа

Это более компактно для использования целых чисел от 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
4
ответ дан 3 December 2019 в 06:19

Поскольку у нас есть эти 3 бита (r/w/x) 3 раза, однажды для пользователя (владелец) полномочия, однажды для полномочий группы и однажды для полномочий для всех других.

Именно поэтому, например, в выводе ls -l, где Вы получаете текстовое представление полномочий, это смотрит, например, как -rwxr-xr-x (первое - просто указание на тип файла, т.е. является ли это каталогом или не).

(На самом деле существует даже еще три бита - SUID, SGID и Липкие - но можно искать те более усовершенствованные полномочия самостоятельно, если Вам интересно.)

5
ответ дан 3 December 2019 в 06:19

К представлению 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 и липком бите как дополнительный бит.

2
ответ дан 3 December 2019 в 06:19

Другие вопросы по тегам:

Похожие вопросы: