Различия между версиями 8 и 9
Версия 8 от 2008-07-27 21:43:03
Размер: 7359
Редактор: MaximByshevskiKonopko
Комментарий:
Версия 9 от 2008-07-27 23:09:21
Размер: 7880
Редактор: VladimirLysikov
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 5: Строка 5:
При доступе процесса к файлу необходимо выяснить, какое отношение имеет данный процесс к данному файлу, и какие действия в итоге он может совершать. При доступе процесса к файлу необходимо выяснить, какое отношение имеет данный процесс к данному файлу и какие действия в итоге он может с данным файлом совершать.
Строка 7: Строка 7:
Алгоритм простой:
 * Если идентификатор пользователя процесса равен id пользователя файла, то права определяются по первому триплету.
 * Если идентификаторы не совпадают, то проверяется, нет ли среди списка групп, в которые входит пользователь, группа файла. Если есть, то используется второй триплет
Алгоритм этого следующий:
 * Если идентификатор пользователя процесса равен идентификатору пользователя файла, то права определяются по первому триплету.
 * Если идентификаторы не совпадают, то проверяется, нет ли среди списка групп, в которые входит пользователь процесса, группа файла. Если есть, то используется второй триплет
Строка 12: Строка 12:
Изменять права доступа к файлам может только владелец. UID сменить нельзя, GID можно менять только на группу из списка своих групп. Изменять права доступа к файлам может только владелец(либо суперпользователь -- см. ниже). UID сменить нельзя, GID можно менять только на группу из своего списка групп.
Строка 14: Строка 14:
Среди всех UID в системе выделяется один, процессы, выполняемые от лица которого, не используют права доступа (система с доверенным субъектом). Если UID процесса равен 0, то он выполняется от лица суперпользователя и при доступе файла он его получает. Соответственно, root может поставить права доступа чему угодно. Среди всех UID в системе выделяется один, процессы, выполняемые от лица которого, не используют права доступа (такая организация носит название "система с доверенным субъектом"). Если UID процесса равен 0, то это значит, что процесс выполняется от лица суперпользователя(root) и при любом доступе к файлу он его получает. Соответственно, суперпользователь может устанавливать права доступа, а также UID и GID для любого файла.
Строка 16: Строка 16:
По этой причине крайне не рекомендуется выполнять обыденные действия от лица рута. Зачем нужен суперпользователь? Для административных действий. Второе --- некие процессы, которые что-то с системой делают. Соответственно, использование root'а стараются (особенно в OWL и ALT Linux) минимизировать. По этой причине крайне не рекомендуется выполнять обыденные действия от лица суперпользователя, так как аккаунт суперпользователя предназначен для административных действий.
##
Второе --- некие процессы, которые что-то с системой делают. Соответственно, использование root'а стараются (особенно в OWL и ALT Linux) минимизировать.
##Не понял указанное выше замечание. Техредактор вставит, если важно.
Строка 18: Строка 20:
Впрос: может ли поменять себе процесс UID? да, но только если у него сначала был UID = 0. Для этго существует вызов setuid. Зачем это использовать: для логина используется login или *dm. Они выполняются от лица суперпользователя. После логина порождается новый процесс, меняется UID и запускается шелл. Получается стройная система: какие-то программы запускаются под рутом, дальше они работают от лица пользователей. А дальше уже UID наследуется. По этой причине пользователь, что бы он не делал, не может повысить себе права. Вопрос: может ли процесс поменять свой UID? Да, но только если у него сначала был UID = 0. Для этго существует системный вызов setuid. Основное использование этой возможности --- программы для входа пользователя в систему, login или *dm. Они выполняются от лица суперпользователя. После логина порождается новый процесс, у которого меняется UID. Получается стройная система: какие-то программы запускаются "под рутом"(от лица суперпользователя), дальше они работают от лица пользователей. А затем уже UID наследуется. При такой организации пользователь, что бы он не делал, не может повысить себе права(по крайней мере без использования "дыр" в программном обеспечении).
Строка 20: Строка 22:
У этой стройной архитектуры есть один изъян --- пользователю бывает необходимо совершать действия от лица суперпользователя. При этом логиниться как рут очень не хочется, хочется всего лишь запустить как суперпользователь программу. Ещё одно типичное действие --- смена пароля, настройка. Ответ --- существует механизм получения прав суперпользователя обычным пользователем. При запуске процесса наследуется UID родительского процесса за одним исключением --- если у файла установлен setuid-бит, и этот файл исполнимый, то получаемый процесс получает UID не пользователя, а файла. Программа sudo позволяет определить список команд, который можно выполнять пользователю от лица другого пользователя. Естественно, команда sudo должна выполняться с правами рута. Есть более простая программа, su, которая позволяет изменить ID пользователя. У этой стройной архитектуры есть один изъян --- пользователю иногда бывает необходимо совершать действия от лица суперпользователя. При этом входить в систему как root не хочется, хочется всего лишь запустить от его лица программу. Типичные действия, для которых это нужно --- смена пароля, настройка. Для этого существует механизм получения прав суперпользователя обычным пользователем. А именно, при запуске процесса наследуется UID родительского процесса за одним исключением --- если у файла установлен setuid-бит, и этот файл исполнимый, то при его исполнении процесс получает UID не пользователя, а файла. При отображении прав доступа в формате rwx это обозначается так: rws. Аналогично, можно установить setgid, и процесс будет наследовать вместо основной группы пользователя группу файла.
Строка 22: Строка 24:
Есть некоторое количество программ, которым необходимо в процессе работы изменять свой UID. Поэтму эти программы при старте должны получить UID 0. В ls -l символ s (rws) означает, что есть x-бит и есть бит setuid. Также, существует специальная программа sudo, которая позволяет определить список команд, который можно выполнять пользователю от лица другого пользователя. Еще есть более простая программа, su, которая позволяет изменить ID пользователя.
##Естественно, команда sudo должна выполняться с правами рута.
##???
Строка 24: Строка 28:
Аналогично setgid --- добавление GID для процесса из GID файла. Типичные usecases --- `/etc/tcb/` и игры (файл, в котором сохраняются highscores, доступен на запись только той группе, setgid на которую стоит у исполняемого файла игры).

Из всего сказанного: вы можете удалить файл из своего каталога, даже если он чужой. Таким образом появляется опасное место --- /tmp. Если бы не одно извращение, то можно было бы удалить чужой файл. Извращение --- sticky bit --- в каталоге, для которого он установлен, и в его подкаталогах, нельзя удалять чужие файлы.
При таком механизме работы пользователь может удалить файл из своего каталога, даже если этот файл чужой. Таким образом появляется опасное место --- /tmp. Для предотвращения такого поведения можно установить sticky bit --- в каталоге, для которого он установлен, и в его подкаталогах, нельзя удалять чужие файлы.
Строка 34: Строка 36:
|| 20 || 1 || 1 || 1 || || 1 || MaximByshevskiKonopko, VladimirLysikov, MaximByshevskiKonopko || || || || 50 || 1 || 1 || 1 || || 1 || MaximByshevskiKonopko, VladimirLysikov, MaximByshevskiKonopko || || ||

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

При доступе процесса к файлу необходимо выяснить, какое отношение имеет данный процесс к данному файлу и какие действия в итоге он может с данным файлом совершать.

Алгоритм этого следующий:

  • Если идентификатор пользователя процесса равен идентификатору пользователя файла, то права определяются по первому триплету.
  • Если идентификаторы не совпадают, то проверяется, нет ли среди списка групп, в которые входит пользователь процесса, группа файла. Если есть, то используется второй триплет
  • Во всех остальных случаях используется третий триплет.

Изменять права доступа к файлам может только владелец(либо суперпользователь -- см. ниже). UID сменить нельзя, GID можно менять только на группу из своего списка групп.

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

По этой причине крайне не рекомендуется выполнять обыденные действия от лица суперпользователя, так как аккаунт суперпользователя предназначен для административных действий.

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

У этой стройной архитектуры есть один изъян --- пользователю иногда бывает необходимо совершать действия от лица суперпользователя. При этом входить в систему как root не хочется, хочется всего лишь запустить от его лица программу. Типичные действия, для которых это нужно --- смена пароля, настройка. Для этого существует механизм получения прав суперпользователя обычным пользователем. А именно, при запуске процесса наследуется UID родительского процесса за одним исключением --- если у файла установлен setuid-бит, и этот файл исполнимый, то при его исполнении процесс получает UID не пользователя, а файла. При отображении прав доступа в формате rwx это обозначается так: rws. Аналогично, можно установить setgid, и процесс будет наследовать вместо основной группы пользователя группу файла.

Также, существует специальная программа sudo, которая позволяет определить список команд, который можно выполнять пользователю от лица другого пользователя. Еще есть более простая программа, su, которая позволяет изменить ID пользователя.

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


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

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

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

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

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

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

Level

Maintainer

Start date

End date

50

1

1

1

1

MaximByshevskiKonopko, VladimirLysikov, MaximByshevskiKonopko


CategoryLectures CategoryPspo CategoryMpgu CategoryUneex

PspoClasses/080718/04Rights (последним исправлял пользователь MaximByshevskiKonopko 2008-10-09 21:43:51)