Как устроена базовая модель прав доступа к файлам в Linux

Ответ

Базовая модель прав доступа в Linux основана на трёх сущностях (владелец, группа, остальные) и трёх типах разрешений (чтение, запись, выполнение). Эта система является основой безопасности в многопользовательских окружениях.

Структура прав:

  1. Субъекты (для кого):

    • owner (u): Владелец файла или каталога.
    • group (g): Группа, к которой принадлежит файл.
    • others (o): Все остальные пользователи системы.
  2. Разрешения (что можно делать):

    • r (read): Право на чтение содержимого файла или списка файлов в каталоге. (Числовое значение: 4)
    • w (write): Право на изменение файла или создание/удаление файлов в каталоге. (Числовое значение: 2)
    • x (execute): Право на запуск файла как программы или вход в каталог. (Числовое значение: 1)

Права задаются для каждого субъекта отдельно. Например, rwxr-xr-- означает, что владелец может читать, писать и выполнять (rwx), группа — читать и выполнять (r-x), а остальные — только читать (r--).

Пример использования chmod:

Команда chmod изменяет права доступа. Числовой формат является суммой значений для каждого субъекта.

# Установить права 755 (rwxr-xr-x) для скрипта
# Владелец: 7 (4+2+1 = rwx)
# Группа:   5 (4+0+1 = r-x)
# Остальные: 5 (4+0+1 = r-x)
chmod 755 my_script.sh

# Посмотреть результат
ls -l my_script.sh
# Вывод: -rwxr-xr-x 1 user user 1024 Oct 26 10:00 my_script.sh

Для смены владельца и группы используются команды chown и chgrp соответственно.

Ответ 18+ 🔞

Слушай, а вот эта ваша линуксовая система прав доступа — это ж, блядь, классика жанра! Сидит себе какой-нибудь админ, пыхтит, и делит весь мир на три сословия, как при царе Горохе. Три категории, три разрешения — и всё, пиздец, больше никому нихуя не положено. Гениально и просто, как топором по башке.

Кто есть кто в этом цирке:

  1. Хозяева жизни (u): Это владелец файла, царь и бог. Он тут главный распиздяй, может всё. Обычно это тот, кто файл и создал.
  2. Ближний круг (g): Это группа, типа своя компания. Им можно чуть меньше, чем хозяину, но больше, чем всяким левым личностям.
  3. Остальная шушера (o): Все, кто не попал в две предыдущие категории. Им, по идее, вообще нихуя не должно светить, но иногда, по доброте душевной, им что-то прочитают разрешают.

А что этим категориям можно?

  • r (читать, 4): Посмотреть, что внутри файла. Для папки — посмотреть, что в ней валяется. Без этого — слепой, нихуя не увидишь.
  • w (писать, 2): Изменить файл или в папке насрать — новый файл создать или старый удалить. Сила, блядь, разрушительная.
  • x (выполнять, 1): Запустить файл как программу. Для папки — вообще магия: войти в неё. Без этого x папка для тебя — как стена, в рот меня чих-пых!

Вот смотришь ты на эту абракадабру rwxr-xr-- и думаешь: "Ёпта, шифровка какая-то". А на самом деле всё просто: первые три буквы — что может владелец (всё, rwx), вторые три — что может группа (почитать и зайти, r-x), последние — что могут все остальные (только почитать, r--). И тишина.

Ну и как этим рулить?

Вот команда chmod — это твой волшебный пендель. Можно буквами ковыряться, а можно цифрами, это как калькулятор ебаный.

# Ставим права 755 на скрипт. 755 — это ж священная магия для скриптов!
# Владелец: 7 (4+2+1 = rwx) — всё может, бог и царь.
# Группа:   5 (4+0+1 = r-x) — почитать и запустить.
# Остальные: 5 (4+0+1 = r-x) — и этим тоже, пусть порадуются.
chmod 755 my_script.sh

# Смотрим, что натворили
ls -l my_script.sh
# А там красота: -rwxr-xr-x ... видишь эти буквы? Это и есть наше 755, только в разобранном виде.

А если нужно не права поменять, а самого хозяина файла — это уже chown. Группу менять — chgrp. В общем, система, блядь, как в тюрьме: у каждого своя хата, свои понятия и свой шестёрка, который может больше других. Главное — не давать w и x всем подряд, а то овердохуища беспорядка начнётся.