- Права доступа
- Доступ к каталогам
- Владелец файла
- Биты доступа
Права доступа
Права доступа взаимодействуют со всеми файлами и процессами находящимися в системе. У каждого объекта в системе есть владелец и определенные права доступа к нему. Суперпользователь (root) способен изменить все параметр относящиеся к правам на системных объектах.
Рассмотрим три основных варианта прав доступа к файлам:
- Все пользователи помимо группы и владельца файла;
- Доступ для членов состоящих в группе, которой принадлежит этот конкретный файл. Группу и пользователей в этой группе можно определить по параметру GID.
- Доступ для хозяина файла. Для этого необходимо совпадение параметра UID пользователя и владельца самого файла.
При доступе система определяет, в какой категории присутствует объект. В момент доступа осуществляется просчитывание прав в данной категории. Для описания доступа к файлу применимы числовые и символьные обозначения:
- x/1 - запуск файла для исполнения;
- w/2 - возможность записи в файл;
- r/4 - чтение файла.
Итоговые права для категории записываются либо слитно(с прочерком на месте отсутствующих прав) либо в виде суммы. Итоговая строка прав — три тройки символов или три суммы:
rwxr-x-r-x / 755
r--r--r-- / 444
Права можно изменить при помощи утилиты chmod;
- chmod <Ключи> <Права> <Файл>
- chmod -c 0755 file.txt
Права для файла можно задать в текстовой, либо в символьной форме, в абсолютном или относительном виде. Присутствует поддержка маски для задания файлов. Ключи включают в себя варианты модификации поведения утилиты сhmod:
- -c/-v - протоколировать работу chmod;
- - h - устанавливать права на файлы ссылок, а не на сами файлы;
- -R - рекурсивно обходить каталоги.
Символьное описание прав выполняется в виде прописывания прав для каждой категории. Операции — дать право, убрать право, присвоить набор прав. u/g/o/a — Пользователь/Группа/Остальные/все.
<Секция>=<Права>,<Секция>=<Права>,<Секция>=<Права>
- chmod u=rw,g=rw,a= file1.txt
Выполнение происходит «от большего к частному» - убрать все права от всех, установить права для хозяина в rw, права группы — rw, права для остальных оставить нулевыми. Допустимо добавлять\убирать отдельные права с помощью операций «+» и «-».
- chmod u+x,a+r file.txt
Добавить право на чтение для всех, добавить право на запуск хозяину файла.
Доступ к каталогам
Права доступа на каталог трактуются иначе в виду особенности применения директорий в работе ОС. Используют аналогичную символику и утилиту chmod. В определенном смысле имеют приоритет — чтобы достичь файла, нужно сначала пройти через каталог.
- r / 4 — возможность просмотреть содержимое директории;
- w / 2 — возможность создавать и удалять файлы — записывать в файл каталога;
- x / 1 — проход через каталог — возможность захода в директорию и обращение к содержимому;
Проход через директорию позволяет использовать директорию в пути к файлу, в том числе и для обращения к файлу внутри директории. Не требует права на чтение, строго говоря — если известен путь, то нет потребности просматривать содержимое директории.
Биты доступа
Существуют права, которые отличаются от классических DAC — существование обусловлено техническими причинами. Подобные права устанавливаются специальными битами, которые устанавливаются в первый символ строчки числового описания прав.
- SUID — Set User ID — запуск программы не от имени вызвавшего пользователя, а от имени хозяина файла. Потенциально небезопасно и является крайней мерой. Код 4;
- SGID — Set Group ID — все созданные файлы в каталоге с SGID получают группу- владелец родительской директории. Все подкаталоги наследуют SGID. Код 2;
- Sticky Bit — удаление файлов в каталоге разрешено только хозяину файла, хозяину каталога и пользователю root. Код 1.
Присвоение специальных битов выполняется с помощью chmod:
- chmod 1777 <Каталог>
- chmod 2777 <Каталог>
- chmod 4555 <Файл>
Владелец файла
Владелец файла — пользователь системы, с которым ассоциирован данный файл. Владелец способен изменять права на файл. Только root способен менять владельца файла.
Для работы с файлами используется команда chown:
- chown <Владелец> <Файл>
Ключи аналогичны chmod. Владелец задается с помощью четырех способов:
- <Пользователь>:<Группа> - установить Пользователя в качестве хозяина файла, установить Группу в качестве хозяйской;
- <Пользователь>: - установить Пользователя в качестве хозяина файла, главную группу Пользователя установить в качестве хозяйской;
- <Пользователь> - установить Пользователя в качестве хозяина файла, группу не менять;
- :<Группа> - установить Группу в качестве хозяйской, хозяина файла не менять;
При создании файла права на файл устанавливаются автоматически согласно маске. Маска может быть переопределена командой bash.
- umask <Маска>
Концепция «маска» - набор цифр, вычитаемых из максимально возможных прав. Получившиеся права будут присвоены файлу. Максимальные права на файл, от которых выполняется вычитание — 0666. Для каталога 0777. Специальные биты на маске выставлять нельзя.
Маска 0022, 0666 — 0022 = 0644, для каталогов 0777 — 0022=0755.