Различия между версиями 4 и 5
Версия 4 от 2008-07-25 02:01:29
Размер: 6129
Редактор: eSyr
Комментарий:
Версия 5 от 2008-07-26 19:27:53
Размер: 6735
Редактор: MaximByshevskiKonopko
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 3: Строка 3:
При доступе процесса к польз опред. id файла и опред. список групп, в которые входит польз-владелец процесса. При доступе процесса к польз определяется id файла и определяется список групп, в которые входит пользователь-владелец процесса.
Строка 5: Строка 5:
Сотв., алгоритм простой:
 * Если идент. польз. процесса равен id польз. файла, то права пред. по первому триплету.
 * Если идент не совпадают, то проверяется, нет ли среди списка групп, в которые входит польз, группа файла. Если есть, то исп. второй триплет
 * Во всех ост. случаях исп. третий триплет.
Сответственно, алгоритм простой:
 * Если идентификатор пользовалеля процесса равен id пользователя файла, то права определяются по первому триплету.
 * Если идентификаторы не совпадают, то проверяется, нет ли среди списка групп, в которые входит пользователь, группа файла. Если есть, то используется второй триплет
 * Во всех остальных случаях используется третий триплет
.
Строка 10: Строка 10:
Изменять права дост. к файлам может только владелец. uid сменить нельзя, gid можно менять только из список своих групп. Изменять права доступа к файлам может только владелец. uid сменить нельзя, gid можно менять только на группу из списка своих групп.
Строка 12: Строка 12:
Среди всех uid в системе выделяется один, процессы, выполняемые от лица которого, не исп. права доступа (система с доверенным субъектом). Если uid процесса равен 0, то он вып. от лица суперпольз и при доступе файла он его получает. Соотв, root может поставить права доступа чему угодно. Среди всех uid в системе выделяется один, процессы, выполняемые от лица которого, не используют права доступа (система с доверенным субъектом). Если uid процесса равен 0, то он выполняется от лица суперпользователя и при доступе файла он его получает. Соответственно, root может поставить права доступа чему угодно.
Строка 14: Строка 14:
По этой причине крайне не рек. выполнять обыденные действия от лица рута. Зачем нужен суперпольз.? Для административных действий. Второе --- некие процессы, которые что-то с системой делают. Соотв, использование root'а стараются (особенно в OWL и ALT Linux) минимизировать. По этой причине крайне не рекомендуется выполнять обыденные действия от лица рута. Зачем нужен суперпользователь? Для административных действий. Второе --- некие процессы, которые что-то с системой делают. Соответственно, использование root'а стараются (особенно в OWL и ALT Linux) минимизировать.
Строка 16: Строка 16:
Впрос: может ли поменять себе процесс uid? да, тлько если у него сначала был uid = 0. Для этго сущ. вызов setuid. Зачем это исп.: для логина исп. login или *dm. Они вып. от лица суперпольз. Псле логина порождается новый процесс, меняется uid и запускается шелл. Получается стройная система: какие-то программы запуск. под рутом, дальше они запущены от лица пользователей. А дальше уже uid наследуется. По этой причине польз., что бы он не делал, не может повысить себе права. Впрос: может ли поменять себе процесс uid? да, тлько если у него сначала был uid = 0. Для этго существует вызов setuid. Зачем это использовать: для логина используется login или *dm. Они выполняются от лица суперпользователя. После логина порождается новый процесс, меняется uid и запускается шелл. Получается стройная система: какие-то программы запускаются под рутом, дальше они запущены от лица пользователей. А дальше уже uid наследуется. По этой причине пользователь, что бы он не делал, не может повысить себе права.
Строка 18: Строка 18:
У этой стрйной арзитектуры есть один изъен --- часто польз. надо соверш. действия от лица суперпольз. При этом логиниться как рут чень не хочется, хчется всего лишь запустить пд рутом программу. Ещё дно типичное действие --- смена пароля, настройка. Ответ --- существует мех. получения прав суперпольз. обычным пользователем. При запуске процесса насл. uid рдительскго прцесса за одним иск. --- если у файла установлен setuid-бит, и этот файл запускемый, то получ. процесс получает uid не пользователя, а файла. Программа sudo позв. определить список команд, который мжно вып. польз. с несвоими правами. Естественно, команда sudo должна выполняться с правами рута. Есть более простая программа, su, которая позв. запустить процесс с чужими правами. У этой стрйной арзитектуры есть один изъян --- пользователю бывает необходимо совершать действия от лица суперпользователя. При этом логиниться как рут очень не хочется, хочется всего лишь запустить пд рутом программу. Ещё одно типичное действие --- смена пароля, настройка. Ответ --- существует механизм получения прав суперпользователя обычным пользователем. При запуске процесса наследуется uid рдительскго прцесса за одним исключением --- если у файла установлен setuid-бит, и этот файл запускемый, то получаемый процесс получает uid не пользователя, а файла. Программа sudo позволяет определить список команд, который мжно выполнять пользователю с несвоими правами. Естественно, команда sudo должна выполняться с правами рута. Есть более простая программа, su, которая позволяет запустить процесс с чужими правами.
Строка 20: Строка 20:
Есть некоторое количесвто программ, которым необх. в процессе работы изм. свой uid. Поэтму эти прграммы при старте должны плучить uid 0. В ls -l символ s озн., чт есть x-бит и есть бит setuid. Есть некоторое количесвто программ, которым необходимо в процессе работы изменять свой uid. Поэтму эти прграммы при старте должны плучить uid 0. В ls -l символ s означает, что есть x-бит и есть бит setuid.
Строка 32: Строка 32:
|| 0 || 1 || 1 || 1 || || 1 || MaximByshevskiKonopko, VladimirLysikov, MaximByshevskiKonopko || || || || 11 || 1 || 1 || 1 || || 1 || MaximByshevskiKonopko, VladimirLysikov, MaximByshevskiKonopko || || ||

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

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

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

  • Если идентификатор пользовалеля процесса равен 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

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