Linux права пользователей — просто о сложном

Все кто начинают изучать операционную систему Linux одно из первых с чем сталкиваются это права пользователей на файлы или папки.
Могу вас заверить что даже многие кто давно работают с этой операционной системой не понимают от куда берутся эти магические числа вроде 577.
Предлагаю разобраться в этом моменте.

Начать предлагаю с небольшого экскурса в двоичную систему исчислений.
Многие из вас знают, а может и нет о том что не одной десятичной системой един наш мир.
Есть десятичная система измерений(DEC), двоичаня(BIN), восьмиричная(OCT), шестнадцатиричная(HEX).
Их мы рассматривать не будем, кому интересно википедия в помощь.
Нас интересует двоичная система BIN.

Итак мы будем сравнивать две системы десятичную и двоичную.
В десятичной системе исчисление начинается с 0 и до 9
В двоичной от 0 до 1
Нужно запомнить, что десятичную систему мы читаем с лева направо, а двоичную с права налево!

DEC BIN
0 000
1 001
2 001
3 011
4 100
5 101
6 110
7 111

Предлагаю самый простой способ вычисления десятичного числа из двоичного:

BIN 1 0 1 1 0 0 1 1
DEC 128 64 32 16 8 4 2 1

Для того что бы понять какое десятичное число в двоичном нужно под каждым двоичным числом с лева направо подставить десятичное в порядке прогрессии начиная с 1 следующее число это то что есть(1) плюс оно же(1) и того 2 следующее то что есть(2) плюс оно же (2) выйдет 4 и тд. . Вычислять мы будем только те десятичные числа которые стоят под единицой, если сверху ноль это говорит нам о том, что число снизу мы не учитываем. В итоге все десятичные числа над которыми 1 мы слаживаем вместе и получаем десятичное значение двоичной записи. В таблице у нас получилось BIN:10110011 = 1+2+16+32+128 DEC:179

Итак я думаю небольшое представление вы уже имеете, что для десятичной 7 достаточно 3 символов двоичной. То есть 7 десятичная это 111 двоичная. Слаживаем 1+2+4 и того = 7 🙂
Как вы уже видели в ОС Linux права на файлы и каталоги назначают тремя символами, к примеру 555. Нужно понимать, что это не двоичная запись, а десятичная, которая разделена на 3 группы, то есть 5 и 5 и 5 десятичные. Каждая группа отвечает за свое предназначение.
Первая группа 5 для Владельца файла — Owner(USER)
Вторая группа 5 для Группы пользователей — Group
Третья группа 5 для Всех остальных  — Other
То есть в записи вида 555 мы можем наблюдать что тут права пользователей для всех трех групп привилегий.
И так берем первую группу владельца там у нас 5 и тут к нам на помощь приходит двоичная система.
Разложив 5 в двоичную мы получим еще 3 группы привилегий то есть DEC:5 = BIN:101
Двоичная группа символов выгладит так:
Первая группа 1 для Записи
Вторая группа 0 для Чтения
Третья группа 1 для Запуска(Исполнения)
И того из первой 5 десятичной мы понимаем что наш владелец файла, может записывать в файл, не может читать и может запускать файл.
Я сделал небольшую наглядную таблицу в которой для примера стоят права на файл 123.

Вот в принципе и весь секрет. Я надеюсь что увидев числа 577 на файле в системе вы без труда в уме сможете вычислить какие права у этого файла.
В дальнейшем вам это очень поможет, когда в консоли вы будете быстро давать права на файлы и каталоги к примеру вот так: chmod 666 myfile.txt

P.S. Главное запомните мантру вида UGO-RWE юзер группа другие — читать писать запускать.

Оставить комментарий

Пожалуйста, будьте вежливы. Мы ценим это. Обязательные поля отмечены *