В вашем киоске не разрешено выполнять linux

Обновлено: 03.07.2024

За последнее время несколько раз пришлось делать сабж, так что решил задокументировать.

Итак, что нужно: чтобы запускалась графическая среда, в ней сразу нужное приложение. Пользователь должен начинать работу сразу, без всяких процедур авторизации и пр. При этом пользователь должен иметь возможность работать только с данным приложением, ну, возможно, оно разрешает запускать какие-то другие программы, но только строго по списку. Пользователь не должен иметь возможности закрыть основное приложение, выйти из графической среды, перелогиниться под другой учетной записью, выключить/перезагрузить компьютер.

Где это нужно - думаю, понятно. Устройства вроде банкоматов, компьютеры общественного пользования, компьютерные клубы. Иногда возникает желание такое сделать дома для компьютерно неграмотной родни - чтобы ничего не напортачили.

Конечно, для надежности нужны некоторые действия с аппаратной частью. Приводы CD/DVD (и floppy) убираются, разъемы usb/firewire на передней панели отключаются от материнки, кнопки reset и power также отключаются от материнки. Системник опломбируется. Только это все надо делать _после_ возни с программной частью - ато ребут в случае чего будет проблемой ;)

С программной частью так. Для автовхода в систему используем GDM (можно kdm/xdm, но они хуже настраиваются) - в настройках (gksudo gdmsetup) включаем Auto login или Timed login, на усмотрение. На вкладке "Пользователи" разрешаем вход только нужным пользователям (чаще всего - только одному; прав у него, конечно, самый минимум). На вкладке "Локальный вход" снимаем галочку "Показывать меню действий". На вкладке "Общие" включаем галочку "Перезапускать XServer. " и указываем нужный сеанс по умолчанию (мы его сейчас создадим, пока что выберите там что угодно).

Создаем файл /usr/share/xsessions/kiosk.desktop (имя любое):

Теперь опять запускаем gdmsetup и указываем Kiosk mode в качестве сеанса по умолчанию.
/usr/local/bin/kiosk-session будет такой:

(не забудьте sudo chmod +x /usr/local/bin/kiosk-session).

Теперь правим /etc/X11/xorg.conf:

Ставим openssh-server, убеждаемся что он будет стартовать автоматом и что в sshd_config стоит "X11Forwarding yes". Если нужен будет доступ по vnc, ставим x11vnc и прописываем в автозапуск (в kiosk-session).

Ну вроде всё, ребутаемся и наблюдаем результаты своих трудов ;)
Вся дальнейшая настройка - по ssh.

PS. Выбору оконного менеджера стоит уделить некоторое внимание. Дело в том, что многие WM, в том числе и из самых "простых" и "легких" (icewm, ion3, . ) имеют встроенную "командную строку", позволяющую запускать что угодно. Так что надо либо отключить это в настройках, либо выбрать WM без такой возможности (тот же metacity; Alt-F2 в Gnome обеспечивает не он, а gnome-panel).

Режим киоска служит для ограничения прав пользователей в системе.
Для использования функциональных возможностей данного режима необходимо установить пакет parsec-cups.

Степень этих ограничений прав пользователей задается маской киоска.
Ее действие аналогично действию маски umask с тем отличием, что если umask накладывается при создании новых объектов ФС, то маска киоска накладывается на права доступа к файлу при любой попытке пользователя получить доступ.

Маска киоска задается в конфигурационном файле /etc/parsec/kiosk_mask и по умолчанию равна 0000 (режим киоска выключен).
Если маска равна 0003 (типичное значение при включенном режиме киоска), для пользователя блокируется доступ по записи и исполнению ко всем файлам, не принадлежащим ему, либо группе, в которую он входит.
При маске, равной 0000, поведение системы остается стандартным и на права доступа пользователя не накладывается никаких ограничений.
Получить текущую маску киоска можно, прочитав содержимое файла /parsecfs/mode_mask.
Маска киоска применяется только к обычным файлам. К каталогам, сокетам и т.д. маска не применяется.

В режиме киоска (маска по умолчанию) пользователь не имеет возможности запустить ни одну системную программу, т.к. эти действия замаскированы.

Команда mkiosk позволяет задавать права доступа пользователя к конкретным файлам.
Эти права доступа не подвержены действию маски и реализованы в виде ACL на специальные виртуальные файлы ФС parsec, являющиеся ссылками на реальные файлы.
После перезагрузки все установленные ACL будут утеряны.

Права доступа к файлу задаются в виде абсолютного пути к файлу.

Так, например, права только на чтение для файла /etc/hosts можно задать в виде:

Права на чтение, запись и исполнение для файла /usr/bin/example.sh задаются в виде:

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

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

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

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

Установить права на чтение файла /etc/passwd для пользователя ttt. При этом не учитывать профиль пользователя. Предполагается, что системная маска киоска равна 0003 и, соответственно, замаскированы права на запись и выполнение файлов

Команда otrace предназначена для трассировки процессов относительно системных вызовов open() и execve().

otrace [-h, --help] [-s, --silent] [-o, --output=] [-k, --kiosk-dir=] [-p, --pid=] [-u, --user=] [-t, --trace] [-a, --audit-trace] [-m, --merge] [-f, --trace-failed] [-e, --mask=] [command]

Команда otrace используется в процессе конфигурирования режима киоска и служит для автоматизации создания профилей прав доступа.

В режиме киоска (стандартные настройки) пользователю запрещены запись и выполнение файлов, не принадлежащих ему, либо группе, в которую он входит. Чтобы пользователь имел возможность хотя бы войти в систему, необходимо явно указать права доступа ко всем файлам, прямо или косвенно участвующим при этой операции. Права доступа к файлам задаются с помощью установки ACL на специальные файлы-ссылки в ФС parsec. При этом права доступа на реальные файлы не изменяются. При перезагрузке системы все ACL на специальные файлы-ссылки будут утеряны.

Чтобы облегчить задачу установки пользователям прав доступа, используются профили прав доступа. Системные профили хранятся в каталоге /etc/parsec/kiosk-profiles`.
Далее приведен пример профиля, позволяющий запустить команду ls:

Для применения профиля к конкретному пользователю используется команда mkiosk.

Если профиль служит для запуска программы, как это было в примере, он должен содержать права доступа не только к исполняемому файлу, но и ко всем используемым библиотекам и всем файлам, которые открывает программа в процессе исполнения. Также необходимы права доступа на динамический линковщик, которые не попадут автоматически в профиль, созданный командой otrace. Минимальные права доступа, которые требуются всегда, содержатся в специальном профиле /etc/parsec/kiosk-profile/default и добавляются туда вручную.

Профили могут описывать права доступа для более сложных задач, чем запуск одной программы.
Чтобы облегчить администрирование, можно использовать профили внутри других профилей.
Если внутри профиля встречается строка с именем другого профиля, то содержимое указанного профиля полностью объединяется с содержимым текущего профиля.
Объединение профилей осуществляется рекурсивно.
Если строка в файле профиля начинается не с символа '/', то она рассматривается как имя профиля.
Команда otrace также поддерживает объединение профилей (см. опцию --merge).

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

Команда otrace может использовать два различных механизма для трассировки процессов.

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

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

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

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

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

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

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

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

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

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

Трассировать запущенные процессы пользователя ttt и все вновь порожденные ими процессы с помощью подсистемы аудита PARSEC. Отслеживать также информацию о неудачных попытках открытия файлов и запуска процессов. Результаты трассировки вывести в stdout

Объединить содержимое профиля пользователя ttt, профиля с именем ls из каталога /etc/parsec/kiosk-profiles и добавить права на чтение и выполнение файла /usr/bin/example.
Предполагать, что системная маска киоска равна 3 и, соответственно, учитывать только те файлы, для которых права доступа должны включать права на запись или выполнение

Кроме средств для работы в режиме командной строки, в распоряжении администратора имеется графический инструмент fly-admin-kiosk, который может быть использован для настройки и управления режимом киоска.
Описание инструмента см. в электронной справке.

Перед использованием утилиты необходимо сделать резервную копию

  • всех системных профилей, находящихся в каталоге /etc/parsec/kiosk-profiles;
  • системного профиля fly-dm в каталоге /etc/parsec/kiosk.

Системные профили, устанавливаемые по умолчанию, находятся в пакете parsec-kiosk.

Переместить системный профиль fly-dm из каталога /etc/parsec/kiosk в каталог /etc/parsec/kiosk-profiles, выполнив команду:

mv /etc/parsec/kiosk/fly-dm /etc/parsec/kiosk-profiles/fly-dm

Создать пользовательский профиль fly-dm в каталоге /etc/parsec/kiosk, выполнив команду:

Отредактировать содержимое файла /etc/parsec/kiosk-profiles, заключив в кавычки имена файлов:

"/lib64/ld-linux-x86-64.so.2" r-x
"/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2" r-x

Далее можно использовать утилиту fly-admin-kiosk.

Для разрешения входа пользователя в режиме текстовый консоли необходимо, используя механизм sudo, от имени суперпользователя root создать файл профиля для пользователя
имя_пользователя в каталоге /etc/parsec/kiosk и добавить в файл имя_пользователя перечень профилей, необходимых для разрешения входа пользователя, выполнив команды:

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

Для добавления разрешенных для пользователя команд необходимо:

    войти в систему от имени учетной записи пользователя на одной консоли (например, tty1);

войти в систему от имени учетной записи администратора на другой консоли (например, tty2), используя команду sudo -s, переключиться в сессию суперпользователя root и запустить протоколирование действий пользователя, выполнив команду:

otrace -a -o /etc/parsec/kiosk-profile/новый_файл_профиля -f --mask=3 -u имя_пользователя

подключить полученный новый профиль к пользователю, выполнив команду:

echo новый_файл_профиля >> /etc/parsec/kiosk/имя_пользователя

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

Для разрешения входа пользователя в графическом режиме необходимо:

    проверить наличие профиля fly-dm в файле /etc/parsec/kiosk/fly-dm;

подключить профиль fly к профилю пользователя имя_пользователя, выполнив от имени суперпользователя root команду:

Для создания профиля fly необходимо:

войти в систему в режиме текстовой консоли от имени администратора, используя команду sudo -s, переключиться в сессию суперпользователя root и остановить работу fly-dm|, выполнив команду:

проверить наличие логической ссылки /usr/bin/x-session-manager, выполнив команду:

удалить указанную логическую ссылку и создать другую с суффиксом .orig, выполнив команды:

rm /usr/bin/x-session-manager
ln -s /etc/alternatives/x-session-manager /usr/bin/x-session-manager.orig

создать текстовый файл /usr/bin/x-session-manager со следующим содержимым:

изменить права на созданный файл, выполнив команду:

установить пакет strace, выполнив команду:

создать каталог /test с правами 777, выполнив команду:

запустить fly-dm, выполнив команду:

в сессии суперпользователя root проверить наличие профиля fly в каталоге /test, выполнив команду:

удалить файл /usr/bin/x-session-manager, выполнив команду:

создать логическую ссылку /usr/bin/x-session-manager, выполнив команду:

ln -s /etc/alternatives/x-session-manager /usr/bin/x-session-manager

перенести профиль в каталог профилей, выполнив команду:

подключить профиль fly к профилю пользователя, выполнив команду:

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

Пример строки из файла /home/имя_пользователя/.xsession-errors:

/etc/X11/fly-dm/Xsession : line 55 /bin/df: отказано в доступе/
Пример добавления строки в профиль fly:
echo '"/bin/df" r-x' >> /etc/parsec/kiosk-profiles/fly

после изменений применить профиль к пользователю, выполнив команду:

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

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

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

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

подключить полученный профиль firefox для пользователя, выполнив команду:

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

Для ограничения возможности запуска программ локальным пользователям администратор может использовать графическую утилиту fly-admin-smc. Для этого необходимо в настройках политики безопасности пользователя графической утилиты fly-admin-smc во вкладке <<Графический киоск Fly>> установить флаг <<Режим графического киоска Fly>>. Флаг включает режим киоска при работе с приложениями из списка. Если в списке одно приложение, то режим киоска включается при работе с этим приложением. Если в списке несколько приложений, то запускается Рабочий стол с этими приложениями. Все доступные каталоги, ярлыки и т.\,д. устанавливаются в соответствии с предоставленным доступом.

Настройка режима киоска с помощью графической утилиты fly-admin-smc осуществляется администратором на максимальном уровне мандатного контроля целостности, установленном в ОС.

Иногда может возникнуть задача запуска приложения в Linux в режиме киоска.

Хотя есть специализированные дистрибутивы для коисков, по ряду причин может быть интересно запуститься именно на базе Calculate Linux. Данная инструкция составлена для Calculate Linux LXQt 18.12.

Установите Calculate Linux LXQt, взяв дистрибутив с сайта.

В процессе установки создайте нового пользователя (далее будем считать, что пользователь для приложения киоска носит имя kiosk), под которым вы будете запускать режим киоска и включите для него автоматический вход (создайте отдельного от guest пользователя, оставив guest для служебных целей).

Войдите под пользователем kiosk и настройте при необходимости работу сети.

Установите приложение, которое собираетесь запускать в режиме киоска (например ELiS Kiosk) и убедитесь, что оно нормально запускается и само открывается на полный экран.

Перейдите к настройке LXQt: Кнопка "Старт" - "Параметры" - "Системные настройки LXQt".

"Старт" - "Параметры" - "Системные настройки LXQt" - "Управление энергопотреблением" - "Бездействие": оставьте включенным управление при простое, но измените поле "при простое" на "ничего".

open-power-settings.jpg

power-settings.jpg

"Старт" - "Параметры" - "Системные настройки LXQt" - "Настройки сеанса" - "Основные настройки" - "Модули LXQt": снимите отметки с "Рабочий стол", "Глобальные сочетания клавиш", "Служба уведомлений", "Панель".

openbox-lxqt-modules.jpg

"Старт" - "Параметры" - "Системные настройки LXQt" - "Настройки сеанса" - "Автозапуск" - "Автозапуск только для LXQt" - "Добавить": выберите приложение, которое будет автоматически запускаться в режиме киоска (например ELiSKiosk).

autorun-app.jpg

Теперь надо отключить декорацию окон под пользователем kiosk, для чего надо настроить Openbox:

"Старт" - "Системные" - "QTerminal" и введите: $ vi

/.config/openbox/rc.xml для перехода редактирования конфигурации в редакторе vim.

edit-openbox-rc.xml.jpg

Найдите тег <applications> и внутри него добавьте:

(справка по vim: для перехода в режим редактирования нажмите "i", затем напишите нужный код, нажмите Esc для выхода из режима редактирования и нажмите последовательно клавиши ":", "w", "q" для записи изменений и выхода из vim).

nodecor-edit.jpg

Для отключения заставки создайте файл

/.profile) и добавьте в него строки:

Сделайте файл .profile исполняемым

На этом можно закончить, но если ваше приложение падает, надо чтобы оно автоматически перезапускалось. Можно это сделать разными путями, один ниже.

Чтобы приложение перезапускать, надо написать сервис, который будет отслеживать факт запуска процесса и если он не запущен, автоматически его запускать.

Такие сервисы называют супервизорами.

Создадим папку для размещения скрипта супервизора:

Напишем сам скрипт в /opt/kiosk/supervesor.sh, который будет проверять, что приложение KioskAppName по пути KioskAppPath (подставьте свой путь и название запускаемого процесса) сейчас запущено и если оно не запущено, то запускает его.

При этом установим задержку при старте в 180 секунд, а проверку на существование процесса будем делать каждую секунду.

Создадим в /etc/init.d/KioskApp скрипт запуска супервизора:

Сделаем скрипт исполняемым:

Включим сервис супервизора:

Иногда сенсорные экраны развернуты и клики отображаются в другом месте, чтобы это преодолеть необходимо произвести преобразования ввода на конкретном сенсоре. Пример скрипта:

Я хотел бы настроить Ubuntu для библиотеки, они только хотят отображать веб-браузер с их сайтом в полноэкранном режиме. Нет адресной строки, ни одна кнопка пользователя не может только щелкнуть ссылку на странице. Если сотрудники библиотеки введут имя пользователя и пароль администратора, они могут изменить любые настройки в Ubuntu.

Любое предложение или полезная ссылка высоко ценится.

4 ответа

Я считаю, что эта замечательная статья объясняет, что вы хотите, с большим количеством скриншотов. Вы хотите создать специальный сеанс в менеджере входа, который запустит браузер, такой как Google Chrome, с помощью опции киоска. Вы можете настроить его так, чтобы обычные пользователи автоматически входили в этот сеанс киоска, но вводили небольшую задержку, чтобы позволить администратору войти в обычный сеанс Ubuntu для администрирования изменений в системе.

Шаги довольно подробные, и поэтому я не буду воспроизводить их полностью здесь. Но так как Ask Ubuntu не рекомендует просто ссылаться (в случае, если связанный сайт не работает), я опущу и вставлю здесь ключевые шаги. Вы должны перейти по ссылке для получения полной инструкции.

Файл рабочего стола, который нужно создать в /usr/share/xsessions/ должен иметь:

Сценарий chromeKiosk.sh должен быть помещен в тот же каталог с правами на выполнение и выглядеть так:

Вместо этого я нашел способ использовать Firefox, потому что хотел избежать полноэкранного режима:

Установите Ubuntu/Lubuntu/ что угодно

Проверьте, работает ли принтер и другое оборудование, которое вам может понадобиться.

Установите дополнения Firefox: "R-kiosk" и "Reset Kiosk" (поиск по "kiosk"), опционально: "Простой белый список". Создайте файл с именем "[профиль]/user.js" (профиль - это имя вашего каталога профиля Firefox, вероятно, ".default") и добавьте в него следующие строки:

(Последние 3 строки могут потребовать объяснения: мне пришлось использовать это для определенного веб-приложения, разработанного для IE, который основывался на всплывающих окнах, поэтому я хотел, чтобы Firefox открывал все всплывающие окна, как это делает IE.)

Создайте файл с именем "[profile]/chrome/userChrome.css" и добавьте в него следующие строки:

Это удалит все ненужные значки / меню из окна. В случае, если я что-то забыл, используйте функцию настройки, чтобы удалить элементы с панели инструментов или переместить их, например, на панель инструментов закладки, которая будет скрыта от просмотра.

Возможно, вы захотите установить Firefox, чтобы никогда не сохранять историю. Установите домашнюю страницу по умолчанию и перезапустите Firefox. Помните, что вы все равно можете закрыть Firefox с помощью alt-f4 и запустить его с "firefox -safe-mode", чтобы отключить режим киоска.

Установите Openbox (sudo apt-get install openbox obconf) Используйте obconf для удаления лишних окон - это только смущает пользователя. Отредактируйте меню openbox (/etc/xdg/openbox/menu.xml), чтобы удалить все ненужные пункты меню. Это, вероятно, оставит вам только "выход" или вообще ничего. Если вы уйдете в "выход", пользователь киоска может выйти из системы и перейти к экрану входа в систему, но он сможет войти снова только в качестве киоска, если только он не сможет угадать пароль администратора. Если вы удалите его полностью, возможно, вы сами не сможете выйти из киоска (например, чтобы войти в систему как администратор и выполнить обслуживание). На моей Ubuntu-установке оба ctrl-alt-backspace и ctrl-alt-sysrq-k отключены, поэтому я могу перезагрузить компьютер только с помощью ctrl-alt-sysrq-b. В качестве альтернативы вы можете войти в систему удаленно или использовать ctrl-alt-f1 и выполнять работу по обслуживанию из командной строки. Отредактируйте файл

Что пользователь может сделать на этой установке:

Закройте Firefox с помощью alt-f4 (но он перезапустится через несколько секунд). Используйте alt-tab для переключения между программами (но Firefox - единственная программа). Он может переходить только по ссылкам с домашней страницы, поэтому он не может злоупотреблять Интернетом. Перезагрузите компьютер (но пароль в BIOS) ctrl-alt-f1 - но он не знает пароль для входа в систему как администратор. Если он может выйти из openbox и перейти на lightdm, он может снова войти в систему как киоск, выбрать другой оконный менеджер и получить полный контроль, поэтому вам нужно удалить все остальные записи.desktop из /usr/share/xsessions/, кроме openbox. рабочий стол. Я не знаю, как вы можете привязать пользователя к конкретному wm.:-(

Преимущества использования Openbox вместо браузера поверх Xwindows:

Chromium / Firefox в режиме киоска всегда максимален. Когда я не использую wm, он никогда не заполняет весь экран. Я получаю пункт меню "Выход" (необязательно).

Для чего это?

Полноэкранный киоск хорош для просмотра определенного веб-сайта, например, школы, библиотеки или музея. Однако приятно иметь возможность вернуться на главную / стартовую страницу в случае, если вы заблудились, поэтому сайт должен быть спроектирован с большой домашней кнопкой и очень простой навигацией. И вы не можете иметь никаких ссылок, ведущих пользователей за пределы сайта, так как они не могут вернуться. Конечно, браузер будет перезагружен после определенного периода бездействия или если вы закроете его с помощью alt-f4, но большинство пользователей этого не узнают и очень расстроятся. Вот почему полноэкранный режим обычно не всегда так удобен для пользователя, и поэтому я хотел сохранить некоторые функциональные возможности панели инструментов, и только Firefox мог дать мне это, а не Chrome. В качестве альтернативы, попробуйте Openkiosk, у меня это не сработало из-за всплывающих окон, но может сработать и у вас.


Представьте себе этот сценарий. Вы хотите разрешить пользователю выполнять только определенные задачи и выполнять определенные команды. Пользователь не должен изменять переменные / пути окружения. Он / она не может посещать другие каталоги, кроме своего домашнего каталога, и не может переключаться на других пользователей и т. Д. Пользователь может выполнять только несколько команд, назначенных системным администратором. Это возможно? Да! Здесь на помощь приходит Restricted Shell . Используя Restricted Shell, мы можем легко ограничить доступ пользователя к системе Linux. После того, как вы поместите пользователей в ограниченный режим оболочки, им разрешено выполнять только ограниченный набор команд. В этом кратком руководстве мы поговорим о том, как это сделать в Linux. Я тестировал это руководство на минимальном сервере CentOS 7. Однако он будет работать в большинстве Unix-подобных дистрибутивов.

Что такое Restricted Shell?

Оболочка с ограничениями ограничивает возможности пользователей выполнять большинство команд и изменять текущий рабочий каталог. Ограниченная оболочка налагает следующие ограничения на пользователей:

Ограничьте доступ пользователей к системе Linux с помощью оболочки с ограничениями

Сначала создайте символическую ссылку под названием rbash из Bash, как показано ниже. Следующие команды следует запускать от имени пользователя root .

Установите пароль для нового пользователя.

Создайте каталог bin внутри домашней папки нового пользователя.

Теперь нам нужно указать, какие команды может запускать пользователь.

Здесь я позволю пользователю запускать только команды «ls» , «mkdir» и «ping» . Вы можете назначить любые команды по вашему выбору.

Для этого выполните следующие команды:

Теперь вы понимаете, почему мы создали каталог bin на предыдущем шаге. Пользователи не могут запускать никакие команды, кроме трех вышеуказанных команд.

Затем запретите пользователю изменять .bash_profile .

Отредактируйте файл /home/infoit/.bash_profile :

Измените PATH как показано ниже.

Нажмите клавишу ESC и введите : wq, чтобы сохранить и закрыть файл.

Теперь, когда пользователь входит в систему, ограниченная оболочка (rbash) будет запускаться как оболочка входа по умолчанию и читать .bash_profile , который установит PATH в $HOME/bin, чтобы пользователь мог запускать только ls , mkdir и команды ping . Оболочка с ограничениями не позволяет пользователю изменять PATH , а разрешения на .bash_profile не позволяют пользователю изменять среду, чтобы обойти ограничения во время следующего сеанса входа в систему.

Проверка Rbash

Теперь выйдите из системы от имени пользователя root и снова войдите в систему с вновь созданным пользователем, в нашем случае с ostechnix.

Затем запустите несколько команд, чтобы проверить, работает он или нет. Например, я хочу очистить Терминал.

Для этого я запустил:

Sample output:

Вы не можете использовать команду cd для перехода в другой каталог.

Пример вывода:

Пример вывода:

Кроме этих трех команд, пользователь ничего не может выполнять. Он / она полностью под вашим контролем.

Разрешить пользователям новые команды

Если вы хотите назначить пользователю больше команд, выйдите из системы текущего пользователя и снова войдите в систему как пользователь root и назначьте команды, как показано ниже.

Например, чтобы позволить пользователю (т.е. ostechnix) выполнять команду rm , выполните следующую команду от имени пользователя root .

Теперь пользователь может использовать команду «rm».

Для получения дополнительных сведений см. Справочные страницы по приведенной ниже ссылке.

Читайте также: