- Поддерживаемые версии
- Отсутствует
Права доступа в Linux: объяснение битовой системы
Короче, я тут на днях случайно задумался о битовых масках и меня прям озарило! Помню, года два назад, когда настраивал свою первую тачку по You must be logged in to see this link., я напрочь затупил на 4 пункте про раздачу прав. Потом смотрел несколько роликов, читал про эти магические числа типа 700, 760, но вообще не врубался — кем нужно быть, чтобы всё это наизусть помнить? А в итоге сейчас само в голову пришло
Начнём с основ
В Linux все права доступа к файлам хранятся очень компактно с помощью битовых масок. Сейчас разберём, что это такое и с чем его едят.
Для начала глянем на группы пользователей. Их постоянно видно в FileZilla или когда используешь команду ls -l:
И так, что это за прочерки и буквы такие?
Что означают эти буковки?
Перед тем как углубиться, объясню базу:
Магия битов
Вот тут начинается самое интересное! Каждую группу из трёх символов (rwx) можно представить как 3 бита в двоичной системе:
Превращает биты в числа
А теперь фишка! Эти 3 бита можно превратить в одно число от 0 до 7. Как? Каждый бит имеет свой "вес":
Чтобы высчитать число, просто складываем "веса" активных битов:
Собираем всё вместе
Итак, наши rw-r--r-- превращаются в:
Получается 644! Вот откуда берутся эти "магические" числа.
Так вот, хоть тут и отображаются разделённые права, но на деле это бы выглядело как: 0644
А что с первым символом?
Первый символ (тип файла) в обычных командах типа chmod не участвует — он определяется автоматически при создании файла. Но технически его тоже можно закодировать:
Правктические примеры
Давайте потренируемся! (Права разделяются | для наглядности)
1. Разрешить владельцу всё: rwx|---|--- → 700
2. Владельцу всё, группе читать и писать: rwx|rw-|--- → 760
3. Классический случай для файлов: rw-|r--|r-- → 644 (владелец читает/пишет, остальные только читают)
4. Классический случай для папок: rwx|r-x|r-x → 755 (владелец всё, остальные читают и заходят в папку)
* Подсказка: x - для папок, это логично не исполнять (что там вообще исполнять?), так-что это у нас считается, как открывать.
Задания для закрепления
Попробуй сам:
1. Владельцу всё, группе только выполнение
2. Владельцу всё, группе читать и писать, остальным только читать
3. Владельцу читать и писать, всем остальным только читать
3. Всем полные права (Только лучше так в реальности не делать!)
Заключение
Вот и всё! Теперь когда в следующий раз увидишь "chmod 755 script.sh", сразу поймешь, что это означает:
Никакой магии — просто математика! Теперь эти числа будут казаться логичными, а не какими-то мистическими заклинаниями из мануалов. (Или так только у меня?
)
Вступление
Короче, я тут на днях случайно задумался о битовых масках и меня прям озарило! Помню, года два назад, когда настраивал свою первую тачку по You must be logged in to see this link., я напрочь затупил на 4 пункте про раздачу прав. Потом смотрел несколько роликов, читал про эти магические числа типа 700, 760, но вообще не врубался — кем нужно быть, чтобы всё это наизусть помнить? А в итоге сейчас само в голову пришло

Начнём с основ
В Linux все права доступа к файлам хранятся очень компактно с помощью битовых масок. Сейчас разберём, что это такое и с чем его едят.
Для начала глянем на группы пользователей. Их постоянно видно в FileZilla или когда используешь команду ls -l:
Код:
-rw-r--r--
|| | |
|| | └─ права доступа для всех остальных
|| |
|| └─ права доступа группы владельца (ниже описанное, что за группы)
||
|└─ права доступа владельца (создателя файла)
|
└─ тип файла (- обычный, d каталог, l ссылка и т.д.)
у каждого юзера может быть группа, которая объединяет его с другими пользователями. Условно общий доступ к файлам для команды сисадминов.
Что означают эти буковки?
Перед тем как углубиться, объясню базу:
- r - read (читать)
- w - write (писать/изменять)
- x - execute (выполнять)
- r-- — можешь только читать
- -w- — можешь только писать
- rw- — можешь читать и писать
- rwx — полные права (читать, писать, выполнять)
Магия битов
Вот тут начинается самое интересное! Каждую группу из трёх символов (rwx) можно представить как 3 бита в двоичной системе:
- 0 = нет права (прочерк -)
- 1 = есть право (буква)
- r-- = 100 в двоичной
- rw- = 110 в двоичной
- rwx = 111 в двоичной
Превращает биты в числа
А теперь фишка! Эти 3 бита можно превратить в одно число от 0 до 7. Как? Каждый бит имеет свой "вес":
- Правый бит, он же младший (выполнение, x) = 1
- Средний бит (запись, w) = 2
- Левый бит, он же старший (чтение, r) = 4
Чтобы высчитать число, просто складываем "веса" активных битов:
- 000 = 0+0+0 = 0 (никаких прав)
- 001 = 0+0+1 = 1 (только выполнение)
- 010 = 0+2+0 = 2 (только запись)
- 011 = 0+2+1 = 3 (запись + выполнение)
- 100 = 4+0+0 = 4 (только чтение)
- 101 = 4+0+1 = 5 (чтение + выполнение)
- 110 = 4+2+0 = 6 (чтение + запись)
- 111 = 4+2+1 = 7 (все права)
Собираем всё вместе
Итак, наши rw-r--r-- превращаются в:
- Владелец: rw- = 110 = 4+2+0 = 6
- Группа: r-- = 100 = 4+0+0 = 4
- Остальные: r-- = 100 = 4+0+0 = 4
Получается 644! Вот откуда берутся эти "магические" числа.
Так вот, хоть тут и отображаются разделённые права, но на деле это бы выглядело как: 0644
А что с первым символом?
Первый символ (тип файла) в обычных командах типа chmod не участвует — он определяется автоматически при создании файла. Но технически его тоже можно закодировать:
- - обычный файл
- d директория
- l символическая ссылка
- c символьное устройство
- b блочное устройство
- p именованный канал
- s сокет
Правктические примеры
Давайте потренируемся! (Права разделяются | для наглядности)
1. Разрешить владельцу всё: rwx|---|--- → 700
2. Владельцу всё, группе читать и писать: rwx|rw-|--- → 760
3. Классический случай для файлов: rw-|r--|r-- → 644 (владелец читает/пишет, остальные только читают)
4. Классический случай для папок: rwx|r-x|r-x → 755 (владелец всё, остальные читают и заходят в папку)
* Подсказка: x - для папок, это логично не исполнять (что там вообще исполнять?), так-что это у нас считается, как открывать.
Задания для закрепления
Попробуй сам:
1. Владельцу всё, группе только выполнение
710
764
644
777
Заключение
Вот и всё! Теперь когда в следующий раз увидишь "chmod 755 script.sh", сразу поймешь, что это означает:
- Владелец: полные права (7 = rwx)
- Группа: читать и выполнять (5 = r-x)
- Остальные: читать и выполнять (5 = r-x)
Никакой магии — просто математика! Теперь эти числа будут казаться логичными, а не какими-то мистическими заклинаниями из мануалов. (Или так только у меня?
