3

Права доступа к файлам в UNIX часто указываются в виде восьмеричного числа. Почему восьмеричное является предпочтительным основанием для этой цели?

2 ответа2

13

Поскольку разрешения хранятся в битовом поле, сгруппированы в 3-битные порции (например, rwx).

Восьмеричный - это естественный способ их описания, потому что вам нужна только 1 восьмеричная цифра, чтобы точно представить любую последовательность из 3 двоичных цифр. (Это похоже на то, почему в программировании используется шестнадцатеричный код - поскольку 1 шестнадцатеричная цифра может представлять 4 двоичных цифры, вам нужно только 2 шестнадцатеричных цифры, чтобы описать 1 байт. Это сводится к тому, что 8 и 16 - степени 2, поэтому преобразование между восьмеричным и двоичным или шестнадцатеричным и двоичным действительно легко.)

Эти куски являются пользователем (он же владелец), группой и другими. Каждый блок имеет три разрешения для описания: чтение, запись и выполнение.

Следовательно, полный набор разрешений выглядит примерно так: rwxrwxrwx, где каждое является двоичной цифрой. Так, например, 110100100 в двоичном виде становится 644 в восьмеричном, и вы знаете, что первая восьмеричная цифра предназначена для разрешений владельца , вторая - для разрешений группы , а третья - для всех остальных.

5

Существует три разных класса, указанных в разрешениях для объекта: владелец, группа и все остальные. Каждый из этих классов имеет три независимых разрешения, которые можно установить: чтение, запись и выполнение. Это означает, что каждый класс имеет один из восьми наборов разрешений:

  1. казнить
  2. Написать
  3. Написать / выполнить
  4. Читать
  5. Чтение / выполнение
  6. Читай пиши
  7. Чтение / запись / выполнение
  8. Нет разрешений

Поскольку восьмеричная цифра принимает одно из восьми различных значений (числа от 0 до 7), вы можете представлять любую комбинацию чтения / записи / выполнения одной восьмеричной цифрой.

Внутри компьютер хранит разрешения в виде битового поля. Так, например, если вы установите разрешения на 644, компьютер может представить это как двоичное число 110100100, или:

 110  |  100  |  100
 rw-  |  r--  |  r--
  6   |   4   |   4
Owner | Group | World

(Обратите внимание, что двоичный код 110 равен восьмеричному 6, а двоичный код 100 равен восьмеричному 4).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .