Linux — права доступа

Руководство Linux — права доступа

Поддерживаемые версии
  1. Отсутствует
Права доступа в Linux: объяснение битовой системы


Вступление



Короче, я тут на днях случайно задумался о битовых масках и меня прям озарило! Помню, года два назад, когда настраивал свою первую тачку по You must be logged in to see this link., я напрочь затупил на 4 пункте про раздачу прав. Потом смотрел несколько роликов, читал про эти магические числа типа 700, 760, но вообще не врубался — кем нужно быть, чтобы всё это наизусть помнить? А в итоге сейчас само в голову пришло 😂



Начнём с основ


В Linux все права доступа к файлам хранятся очень компактно с помощью битовых масок. Сейчас разберём, что это такое и с чем его едят.

Для начала глянем на группы пользователей. Их постоянно видно в FileZilla или когда используешь команду ls -l:
filezila-permissions.png
Console permissions.png
И так, что это за прочерки и буквы такие?
Код:
-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
2. Владельцу всё, группе читать и писать, остальным только читать
764
3. Владельцу читать и писать, всем остальным только читать
644
3. Всем полные права (Только лучше так в реальности не делать!)
777



Заключение


Вот и всё! Теперь когда в следующий раз увидишь "chmod 755 script.sh", сразу поймешь, что это означает:
  • Владелец: полные права (7 = rwx)
  • Группа: читать и выполнять (5 = r-x)
  • Остальные: читать и выполнять (5 = r-x)


Никакой магии — просто математика! Теперь эти числа будут казаться логичными, а не какими-то мистическими заклинаниями из мануалов. (Или так только у меня?🤔)
Автор
Groundbreaking
Просмотры
191
Первый выпуск
Обновление
Оценка
5.00 звёзд 2 оценок

Другие ресурсы пользователя Groundbreaking

Поделиться ресурсом

Последние рецензии

😁👍 Крута спс буду знать теперь чо как там да лайк тунг тунг сахур
Groundbreaking
Groundbreaking
хахаха, рад был помочь
вот это действительно норм тема, да, побольше бы такой норм темы да да
Назад
Сверху Снизу