Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...


Так как задавать все права доступа в командной строке было бы крайне неудобно, существует система профилей.
Это файлы с готовыми наборами прав доступа для запуска каких-либо программ.
Например, есть профиль для запуска bash, профиль для запуска ls и т.д.
Эти профили хранятся в каталоге /etc/parsec/kiosk-profiles. Вместо прав доступа к конкретным файлам, в командной строке команды mkiosk можно указать готовый профиль.
Задание файлов отличается от задания профиля по наличию первого символа `/` в имени файла:
Имена профилей задаются без указания полного пути к ним. В общем случае профиль может содержать в себе права доступа на более сложные действия, чем запуск одной программы.
Существует также профиль с именем default, который используется автоматически при каждом запуске mkiosk.
В нем содержатся права доступа, которые необходимы всегда. Это, например, право на использование динамического линковщика.
Для создания профилей можно использовать команду otrace.

Для автоматизации процесса установки прав доступа для каждого пользователя существует конфигурационный файл, хранящийся в каталоге /etc/parsec/kiosk и содержащий все необходимые права доступа.
По сути это такой же профиль, как и в случае профилей программ, но относящийся к конкретному пользователю.
Этот файл может содержать как явное задание прав доступа к конкретным файлам, так и ссылки на профили программ.
При входе пользователя в систему права доступа из конфигурационного файла будут установлены автоматически при помощи специального PAM-модуля.

Параметры команды приведены в таблице:

Параметр Описание

-h, --help

Вывести справку и выйти
-u , --user=Установить права доступа для пользователя
-w, --without-profileНе использовать профиль указанного пользователя для установки прав доступа. Будут использованы только права доступа из командной строки
-e, --maskУказать маску киоска. Права доступа на файлы для пользователя будут устанавливаться только в том случае, когда необходимые биты маскируются указанной маской. По умолчанию используется текущая маска киоска из файла /parsecfs/mode_mask



Примеры:
Установить права доступа для пользователя ttt, взятые из его профиля /etc/parsec/kiosk/ttt

...

Первый --- это программа strace (опция --trace).
Второй --- подсистема аудита PARSEC (опция --audit-trace). Программа strace имеет некоторые ограничения по использованию, поэтому применять её следует только для трассировки довольно простых, не SUID-программ.

В режиме --trace цель трассировки может быть задана либо в командной строке команды otrace в качестве аргумента (тогда указанная программа будет запущена), либо может быть задан PID уже существующего процесса (опция --pid).

В режиме --audit-trace цель трассировки задается так же, как и в режиме --trace. Но кроме описанных, есть еще дополнительный способ задания цели трассировки --- опция --user.
При этом всем существующим процессам, принадлежащим указанному пользователю, будут выставлены соответствующие флаги аудита.
Таким образом, будут трассироваться все действия пользователя. Режим полезен, когда необходимо создать профиль, разрешающий пользователю выполнять целый набор сложных действий и трассировать каждую программу в отдельности затруднительно.

Если используется режим --audit-trace, то в системе не должно быть сторонних процессов, на которых установлены флаги аудита. Иначе в профиль может попасть информация, порожденная сторонними процессами.
В режиме трассировки всех процессов указанного пользователя достаточно, чтобы в системе не было других процессов с установленными флагами аудита и принадлежащих этому пользователю.

Команда otrace` по умолчанию записывает в профиль информацию только о тех действиях процесса (open(), execve()), которые прошли успешно. Однако для большей универсальности можно использовать опцию --trace-failed, которая позволит записать в профиль также информацию и о неудачных попытках. Это полезно, например, если процесс пытается открывать конфигурационные файлы. В момент трассировки файл может не существовать, но впоследствии он может появиться.

Параметры команды приведены в таблице:

ПараметрОписание
-h, --helpВывести справку и выйти
-s, --silentНе выводить информационные сообщения
-o , --output=Записать результаты трассировки в указанный файл. По умолчанию --- stdout
-k , --kiosk-dir=

Указать путь к каталогу с профилями киоска. Используется в операции --trace. По умолчанию --- /etc/parsec/kiosk-profiles

-p , --pid=Трассировать процесс с указанным идентификатором, а также все порожденные им процессы
-u , --user=

Указать имя пользователя. Используется совместно с --audit-trace или --merge

-t, --traceИспользовать для трассировки процессов команду strace. Не может быть использована совместно с --audit-trace
-a, --audit-traceИспользовать для трассировки процессов подсистему аудита PARSEC. Не может быть использована совместно с --trace
-m, --merge

Объединять все права доступа, указанные каким-либо способом в единый поток с уникальными записями. Права доступа могут быть указаны в явном виде, в виде профилей, в виде профиля пользователя и профиля, используемого по умолчанию (/etc/parsec/kiosk-profiles/default)

-f, --trace-failedУчитывать неудачные попытки вызова open() и execve(). Права доступа к этим файлам будут заданы согласно параметрам, с которыми процесс пытается получить доступ к ним
-e , --mask=Указать маску киоска. Это позволяет обрабатывать данные согласно этой маске и учитывать только те файлы, права доступа к которым будут действительно замаскированы. По умолчанию маска равна 7


Примеры:

Запустить и трассировать процесс ls  с помощью команды strace. Записать результат в файл /tmp/ls_trace

...


Для добавления пользователю разрешения на выполнение конкретных программ (например, firefox) необходимо:

  1. выключить режим киоска, выполнив команды:

    Command
    echo 0000 > /etc/parsec/kiosk_mask
    reboot


  2. выполнить в графическом режиме вход в систему от имени пользователя;
  3. войти в систему в режиме текстовой консоли от имени администратора, используя команду sudo -s, переключиться в сессию root и запустить протоколирование действий пользователя, выполнив команду:

    Command
    otrace -a -o /etc/parsec/kiosk-profile/firefox -f --mask=3 -u имя_пользователя


  4. дождаться перезапуска сервиса parlogd;
  5. перейти в графический интерфейс пользователя и запустить/завершить firefox;
  6. завершить сеанс пользователя;
  7. в консоли суперпользователя root остановить трассировку, нажав клавишу <Enter>;
  8. подключить полученный профиль firefox для пользователя, выполнив команду:

    Command
    echo firefox >> /etc/parsec/kiosk/имя_пользователя


  9. в консоли суперпользователя root включить режим киоска и перезагрузить ОС, выполнив команды:

    Command
    echo 0003 > /etc/parsec/kiosk_mask
    reboot


...