Права доступа к файлам в UNIX часто указываются в виде восьмеричного числа. Почему восьмеричное является предпочтительным основанием для этой цели?
2 ответа
Поскольку разрешения хранятся в битовом поле, сгруппированы в 3-битные порции (например, rwx).
Восьмеричный - это естественный способ их описания, потому что вам нужна только 1 восьмеричная цифра, чтобы точно представить любую последовательность из 3 двоичных цифр. (Это похоже на то, почему в программировании используется шестнадцатеричный код - поскольку 1 шестнадцатеричная цифра может представлять 4 двоичных цифры, вам нужно только 2 шестнадцатеричных цифры, чтобы описать 1 байт. Это сводится к тому, что 8 и 16 - степени 2, поэтому преобразование между восьмеричным и двоичным или шестнадцатеричным и двоичным действительно легко.)
Эти куски являются пользователем (он же владелец), группой и другими. Каждый блок имеет три разрешения для описания: чтение, запись и выполнение.
Следовательно, полный набор разрешений выглядит примерно так: rwxrwxrwx, где каждое является двоичной цифрой. Так, например, 110100100 в двоичном виде становится 644 в восьмеричном, и вы знаете, что первая восьмеричная цифра предназначена для разрешений владельца , вторая - для разрешений группы , а третья - для всех остальных.
Существует три разных класса, указанных в разрешениях для объекта: владелец, группа и все остальные. Каждый из этих классов имеет три независимых разрешения, которые можно установить: чтение, запись и выполнение. Это означает, что каждый класс имеет один из восьми наборов разрешений:
- казнить
- Написать
- Написать / выполнить
- Читать
- Чтение / выполнение
- Читай пиши
- Чтение / запись / выполнение
- Нет разрешений
Поскольку восьмеричная цифра принимает одно из восьми различных значений (числа от 0 до 7), вы можете представлять любую комбинацию чтения / записи / выполнения одной восьмеричной цифрой.
Внутри компьютер хранит разрешения в виде битового поля. Так, например, если вы установите разрешения на 644, компьютер может представить это как двоичное число 110100100, или:
110 | 100 | 100
rw- | r-- | r--
6 | 4 | 4
Owner | Group | World
(Обратите внимание, что двоичный код 110 равен восьмеричному 6, а двоичный код 100 равен восьмеричному 4).