Процессы, права доступа

При доступе процесса к польз определяется id файла и определяется список групп, в которые входит пользователь-владелец процесса.

Сответственно, алгоритм простой:

Изменять права доступа к файлам может только владелец. uid сменить нельзя, gid можно менять только на группу из списка своих групп.

Среди всех uid в системе выделяется один, процессы, выполняемые от лица которого, не используют права доступа (система с доверенным субъектом). Если uid процесса равен 0, то он выполняется от лица суперпользователя и при доступе файла он его получает. Соответственно, root может поставить права доступа чему угодно.

По этой причине крайне не рекомендуется выполнять обыденные действия от лица рута. Зачем нужен суперпользователь? Для административных действий. Второе --- некие процессы, которые что-то с системой делают. Соответственно, использование root'а стараются (особенно в OWL и ALT Linux) минимизировать.

Впрос: может ли поменять себе процесс uid? да, тлько если у него сначала был uid = 0. Для этго существует вызов setuid. Зачем это использовать: для логина используется login или *dm. Они выполняются от лица суперпользователя. После логина порождается новый процесс, меняется uid и запускается шелл. Получается стройная система: какие-то программы запускаются под рутом, дальше они запущены от лица пользователей. А дальше уже uid наследуется. По этой причине пользователь, что бы он не делал, не может повысить себе права.

У этой стрйной арзитектуры есть один изъян --- пользователю бывает необходимо совершать действия от лица суперпользователя. При этом логиниться как рут очень не хочется, хочется всего лишь запустить пд рутом программу. Ещё одно типичное действие --- смена пароля, настройка. Ответ --- существует механизм получения прав суперпользователя обычным пользователем. При запуске процесса наследуется uid рдительскго прцесса за одним исключением --- если у файла установлен setuid-бит, и этот файл запускемый, то получаемый процесс получает uid не пользователя, а файла. Программа sudo позволяет определить список команд, который мжно выполнять пользователю с несвоими правами. Естественно, команда sudo должна выполняться с правами рута. Есть более простая программа, su, которая позволяет запустить процесс с чужими правами.

Есть некоторое количесвто программ, которым необходимо в процессе работы изменять свой uid. Поэтму эти прграммы при старте должны плучить uid 0. В ls -l символ s означает, что есть x-бит и есть бит setuid.

Аналогично setgid --- добавление gid для процесса из gid файла. Типичные usecases --- passwd в альте и игры.

Из всего сказанного: вы можете удалить файл из своего каталога, даже если он чужой. Таким образом появляется опасное место --- /tmp. Если бы не одно извращение, то омжно было бы удалить чужой файл. Извращение --- sticky bit --- нельзя удалять чужие файлы.


Сведения о ресурсах

Готовность (%)

Продолжительность (ак. ч.)

Подготовка (календ. ч.)

Полный текст (раб. д.)

Предварительные знания

Level

Maintainer

Start date

End date

11

1

1

1

1

MaximByshevskiKonopko, VladimirLysikov, MaximByshevskiKonopko


CategoryLectures CategoryPspo CategoryMpgu CategoryUneex