Linux

Kiosk. Ограничение функций в KDE

Данная заметка является переводом (с незначительными изменениями) официальной документации KDE — Kiosk — Simple configuration management for large deployment.

Фреймворк Kiosk предоставляет набор функций, позволяющих легко и эффективно ограничивать функции среды KDE на основе учетных данных пользователей и групп. В дополнение к вводному обзору, в этой статье рассматривается блокировка настроек конфигурации, ограничения действий и ресурсов, назначение профилей пользователям и группам и многое другое.

Введение в Kiosk

KDE Kiosk — это фреймворк, который был встроен в KDE начиная с версии 3. Он позволяет администраторам создавать контролируемую среду для своих пользователей, настраивая и блокируя практически любой аспект рабочего стола, включая безвредные, такие как установка и закрепление фоновых обоев, функциональные, такие как отключение выхода пользователей из системы и доступа к системе печати, и более серьезные с точки зрения безопасности, такие как отключение доступа к командной оболочке.

Такая структура жизненно необходима для поддержки и расширения распространения KDE в таких областях, как бизнес и корпоративная среда, школьные и университетские лаборатории. Другими очевидными областями, где требуется или желательна ограниченная среда рабочего стола, являются интернет-кафе, терминалы общественного доступа и киоски.

Фреймворк KDE Kiosk управляется с помощью записей в различных конфигурационных файлах. В этой статье — о расположении конфигурационных файлов KDE и о том, как их редактировать, чтобы включить возможности Kiosk. Также — о различных параметрах окружения рабочего стола, которые можно настроить и/или заблокировать с помощью фреймворка Kiosk. 

Структура и иерархия файлов настроек KDE

Все приложения KDE используют один и тот же API для создания, доступа и изменения своих файлов конфигурации. Поэтому все файлы конфигурации хранятся в заранее определенных каталогах и имеют одинаковый синтаксис и структуру. Они организованы в виде групп пар ключ-значение. Например, давайте рассмотрим некоторые настройки поведения мыши и стиля рабочего стола, хранящиеся в ~/.config/kdeglobals:

[KDE]
SingleClick=true
DoubleClickInterval=400
widgetStyle=breeze

Группа KDE, как показано на рисунке, содержит две пары ключ-значение для указания некоторых глобальных настроек рабочего стола, таких как поведение мыши (активация одним щелчком против двойного щелчка) и стиль виджета используемых приложений. Начало группы обозначается помещением ее названия в квадратные скобки, а заканчивается группа, когда начинается следующая или когда достигается конец конфигурационного файла. И ключ, и его значение могут содержать пробелы, но все пробелы непосредственно до и после знака равенства и в конце строки игнорируются.

Файлы конфигурации KDE могут храниться в нескольких каталогах, и файлы конфигурации с одинаковыми именами могут присутствовать в разных каталогах. Существует заранее определенный порядок, в котором эти места проверяются на наличие конфигурационных файлов, и KDE объединяет одноименные конфигурационные файлы по ключу; это известно как «каскадная конфигурация». Если один и тот же ключ определен в нескольких конфигурационных файлах, то будет использовано значение ключа, считанное из дерева каталогов с наивысшим приоритетом.

Некоторые переменные окружения используются для указания каталогов, в которых следует искать файлы конфигурации1: $XDG_CONFIG_DIRS — переменная окружения для всех рабочих столов, используемая для глобального поиска файлов конфигурации в системе. $XDG_CONFIG_HOME2 определяет каталог, в котором должны храниться конфигурации для конкретного пользователя.

Каскадная природа конфигурационных файлов KDE позволяет системным администраторам устанавливать общесистемные значения по умолчанию, гарантируя при этом, что пользовательские настройки конфигурации всегда будут переопределять эти системные значения по умолчанию. Это также является основой фреймворка Kiosk, поскольку записи конфигурации могут быть помечены как «неизменяемые» — записи в пользовательском конфигурационном файле в $XDG_CONFIG_HOME, которые были помечены как неизменяемые в каталоге системного уровня, не будут прочитаны и, следовательно, не будут иметь никакого эффекта.

Продолжим пример со стилями виджетов приложений и, как системные администраторы интернет-кафе, мы хотим убедиться, что стиль виджетов по умолчанию — это стиль «Breeze» и не может быть изменен клиентами, чтобы обеспечить визуальную целостность брендинга между машинами в магазине. В одном из деревьев каталогов системного уровня ($XDG_CONFIG_DIRS) мы отредактируем файл $XDG_CONFIG_DIRS/kdeglobals так, чтобы он содержал:

[KDE]
SingleClick=true 
DoubleClickInterval=400 
widgetStyle[$i]=breeze 

Добавление [$i] к ключу конфигурации отмечает его как неизменяемый (immutable). Поскольку конфигурационные файлы из $XDG_CONFIG_DIRS считываются раньше, чем $XDG_CONFIG_HOME, стиль теперь «заблокирован», и любые пользовательские настройки, сделанные пользователем в нем, напрямую или через диалог настройки, не будут прочитаны системой конфигурации.

Параметры конфигурации также могут быть помечены как неизменяемые по группам и по файлам. Чтобы пометить группу как неизменяемую, мы добавляем [$i] к имени группы:

[KDE][$i]
SingleClick=true 
DoubleClickInterval=400 
widgetStyle=breeze 

Аналогично, мы можем пометить весь файл конфигурации как неизменяемый, поместив [$i] в отдельную строку в начале файла; теперь система будет игнорировать одноименный файл конфигурации в пользовательском каталоге конфигурации KDE.

Заметьте: бывает необходимо группу параметров конфигурации определить как неизменяемую на системном уровне, но при этом оставить возможность установки дополнительных ограничений на уровне пользователя. В этом случае нужно использовать не [$i], а [$ie] (или [$ei]) — неизменяемый расширяемый (immutable and expandable).

Установить параметры конфигурации по умолчанию для приложений KDE так же просто, как и исправить фон рабочего стола. Мы можем заблокировать настройки Dolphin, чтобы всегда показывать индикатор свободного места в его панели состояния, указав следующее в файле под названием dolphinrc в одном из деревьев системного каталога:

[General]
ShowSpaceInfo[$i]=true

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

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

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

Порядок загрузки файлов следующий:

  • ~/.config/myAppConfigrc (например, dolphinrc)
  • /etc/xdg/myAppConfigrc (например, dolphinrc)
  • ~/.config/kdeglobals
  • /etc/xdg/kdeglobals
  • ~/.config/system.kdeglobals
  • /etc/xdg/system.kdeglobals
  • /etc/kde5rc

Ограничения действий в KDE

Многие действия в приложениях KDE и Plasma могут быть ограничены с помощью системы Kiosk путем размещения соответствующих записей в файле в каталоге системного уровня, например, /etc/xdg/kdeglobals. Мы можем запретить действие открытия файла, добавив следующую запись:

[KDE Action Restrictions][$i]
action/file_open=false

Это изменение можно увидеть в меню «Файл» и панели инструментов Kate, которая теперь не может изменить настройки.

Действия, которые могут быть ограничены, включают все стандартные файловые операции, операции редактирования, действия по просмотру Интернета и файлов, использование закладок и доступ к справочной системе. Полный список можно найти в разделе Ключи.

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

  • shell_access: Может ли пользователь запускать оболочку для ввода команд, можно ли использовать опцию «Run Command» (Alt-F2) для запуска команд оболочки и произвольных исполняемых файлов, а также будут ли выполняться исполняемые файлы, помещенные в папку автозапуска пользователя.
  • logout: Определяет, сможет ли пользователь завершать сеанс KDE Plasma.
  • lock_screen: Может ли пользователь блокировать экран.
  • run_command: Доступ к опции «Выполнить команду» (KRunner).
  • movable_toolbars: Можно ли отсоединять и/или перемещать панели инструментов.
  • action/options_show_toolbar: Можно ли скрывать панели инструментов.
  • plasma/plasmashell/unlockedDesktop: Может ли пользователь разблокировать виджеты. Разблокировка виджетов позволит пользователю перемещать, добавлять и удалять виджеты, панели, панели запуска и т. д.

В публичной среде установите для действия lineedit_text_completion значение false, чтобы текстовые поля и диалог «Выполнить команду» не запоминали ранее введенную информацию. Обратите внимание, что это не повлияет на веб-браузеры сторонних производителей, такие как Firefox.

Ограничения URL в KDE

Система KDE Kiosk позволяет системным администраторам контролировать доступ к определенным URL-адресам на основе реферера, протокола, хоста и пути через записи в файле. Хотя некоторые из этих задач могут быть более подходящими для прокси-сервера или брандмауэра, эта функциональность становится невероятно полезной, если учесть тот факт, что KDE рассматривает все местоположения как URL. Для блокировки доступа к веб-сайтам можно использовать следующий пример:

Обратите внимание, что это касается только приложений KDE, таких как Dolphin или Konqueror. Другие браузеры настройка не затрагивает.

[KDE URL Restrictions][$i]
rule_count=2 
rule_1=open,,,,http,*.hotmail.msn.com,,false 
rule_2=open,,,,http!,webmail.college.com,,false

Первое правило блокирует весь http и https доступ к любому URL, содержащему .hotmail.msn.com в части host. Указание одного протокола также будет соответствовать аналогичным протоколам, начинающимся с того же имени; поэтому указание http также будет включать https. Правило 2 блокирует только http и, таким образом, заставляет пользователя использовать https (при условии, что он поддерживается). Приведенные выше правила могут быть использованы в качестве основы, например, для блокирования всего доступа к веб-клиентам электронной почты третьих сторон и принуждения пользователей использовать проверенную на вирусы учетную запись электронной почты компании или колледжа через https. Если, например, интернет-кафе спонсируется поисковой системой, то его системные администраторы могут использовать аналогичные правила для блокирования доступа к конкурентам этой поисковой системы.

Формат для ограничений URL следующий:

rule_N=<action>,<referrer protocol>,<referrer host>,<referrer path>, <protocol>,<host>,<path>,<enabled>

Любой параметр, оставленный пустым, будет соответствовать по умолчанию любым значениям (all). Как мы видели в примере выше, для имен хостов можно использовать подстановочные знаки. Указание пути приведет к совпадению всех URL-адресов, начинающихся с этого пути, если в конце пути не стоит восклицательный знак.

Как я уже говорил, KDE рассматривает все местоположения как URL: например, интернет-адреса — это URL с протоколом http или https, а локальные файлы на жестком диске — это URL с протоколом file. Доступ к локальной файловой системе может быть ограничен с помощью подобных правил:

[KDE URL Restrictions][$i]
rule_count=6 
rule_1=open,,,,file,,,false 
rule_2=list,,,,file,,,false 
rule_3=open,,,,file,,$HOME,true 
rule_4=list,,,,file,,$HOME,true 
rule_5=open,,,,file,,$TMP,true 
rule_6=list,,,,file,,$TMP,true 

Эти правила позволят пользователю просматривать и получать доступ только к файлам, хранящимся в его домашнем каталоге. Мы также разрешаем доступ к временному каталогу, используемому KDE для обеспечения нормальной работы. Если вы применяете политику безопасности, то эти правила должны использоваться в сочетании с другими правилами, такими как ограничение доступа к shell.

Ограничения панели управления KDE

Почти все параметры Plasma могут быть сконфигурированы и настроены через «Системные настройки». Каждая «группа» настроек, таких как «Экраны», «Цвета», «Шрифты» и т.д., соответствует модулю системных настроек, и каждый из этих модулей может быть заблокирован с помощью фреймворка Kiosk.

Например, чтобы запретить пользователям изменять настройки мыши, можно заблокировать этот модуль системных настроек. Для этого добавьте следующий текст в глобальный файл kde5rc в указанной выше иерархии.

[KDE Control Module Restrictions][$i]
mouse.desktop=false

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

Выполните команду kcmshell5 —list для получения списка доступных модулей и используйте в файле конфигурации формат .desktop. В большинстве случаев в условиях общественного доступа/кафе, вероятно, потребуется заблокировать почти все модули центра управления.

Системные настройки Plasma

Заключительные замечания

Фреймворк Kiosk в KDE является необходимым инструментом для любого системного администратора, который поддерживает или развертывает Plasma в многопользовательской среде или ситуации, когда пользователям нельзя доверять. Не позволяя пользователям изменять настройки по умолчанию и блокируя настройки, которые могут представлять угрозу безопасности, системный администратор может значительно сократить количество времени, которое будет потрачено на «обслуживание и ремонт» каждого рабочего стола, а также обеспечить всем пользователям привычную и знакомую среду рабочего стола каждый раз, когда они садятся за компьютер.

Ключи режима Киоск

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

В какой файл конфигурации поместить эти записи, зависит от того, хотите ли вы сделать их глобальными для всех приложений или специфичными для одного приложения. Чтобы ограничения действовали для всех приложений, поместите их в kdeglobals. Чтобы включить ограничение для определенных приложений, поместите их в конфигурацию конкретного приложения, например, konquerorrc для Konqueror.

Ограничения действия приложений

Эти клавиши отключают действия, которые обычно встречаются в приложениях KDE. Чтобы использовать эти действия, создайте раздел в kdeglobals, который выглядит следующим образом:

[KDE Action Restrictions][$i]
action/<key>=false
КлючМенюДействие
action/file_newФайлНовый
action/file_openФайлОткрыть
action/file_open_recentФайлОткрыть последний файл
action/file_saveФайлСохранить
action/file_save_asФайлСохранить как
action/file_revertФайлВернуть
action/file_closeФайлЗакрыть
action/file_printФайлНапечатать
action/file_print_previewФайлПросмотр печати
action/file_mailФайлОтправить по Email
action/file_quitФайлЗавершить
action/edit_undoПравкаОтменить
action/edit_redoПравкаПовторить
action/edit_cutПравкаВырезать
action/edit_copyПравкаСкопировать
action/edit_pasteПравкаВставить
action/edit_select_allПравкаВыбрать все
action/edit_deselectПравкаОтменить выбор
action/edit_findПравкаНайти
action/edit_find_nextПравкаНайти следующее
action/edit_find_lastПравкаНайти последнее
action/edit_replaceПравкаЗаменить
action/view_actual_sizeВид100% масштаб
action/view_fit_to_pageВидПо размеру страницы (масштаб)
action/view_fit_to_widthВидПо ширине (масштаб)
action/view_fit_to_heightВидПо высоте (масштаб)
action/view_zoom_inВидУвеличить
action/view_zoom_outВидУменьшить
action/view_zoomВидМасштаб
action/view_redisplayВидОбновить
action/go_upПереходВверх
action/go_backПереходНазад
action/go_forwardПереходВперед
action/go_homeПереходВ начало
action/go_previousПереходПредыдущий
action/go_nextПереходСледующий
action/go_gotoПереходПерейти к…
action/go_goto_pageПереходПерейти на страницу…
action/go_goto_lineПереходПерейти к строке…
action/go_firstПереходПерейти к началу
action/go_lastПереходПерейти к концу
action/bookmarksЗакладкиТакже отключает action/bookmark_add иaction/bookmark_edit
action/bookmark_addЗакладкиДобавить закладку
action/bookmark_editЗакладкиРедактировать закладки
action/tools_spellingСервисПроверить орфографию
action/options_show_menubarНастройкаПоказать/скрыть строку меню
action/options_show_toolbarНастройкаПоказать/скрыть панель инструментов, также отключает подменю «Панели инструментов», если оно есть
action/options_show_statusbarНастройкаПоказать/скрыть строку состояния
action/options_save_SettingsНастройкаСохранить настройки
action/options_configureНастройкаНастроить приложение
action/options_configure_keybindingНастройкаКомбинации клавиш
action/options_configure_toolbarsНастройкаПанели инструментов
action/options_configure_notificationsНастройкаНастроить уведомления
action/fullscreenНастройкаВ полноэкранный режим
action/helpСправкаЕще не полностью реализовано
action/help_contentsСправкаСправка приложения
action/help_whats_thisСправкаРежим «что это?»
action/help_report_bugСправкаСообщить об ошибке
action/help_about_appСправкаОкно «О приложении»
action/help_about_kdeСправкаОкно «О KDE»

KCalc

Если пометить конфигурационный файл kcalcrc как неизменяемый, кнопка «Configure» не будет отображаться.

Файловый менеджер

КлючДействие
action/editfiletypeИзменить связанные приложения
action/propertiesСвойства файла
action/openwithОткрыть файл с помощью
action/openintabОткрыть ссылку в новой вкладке
action/kdesktop_rmbМеню ПКМ, см примечание
action/iconview_previewПоказывать эскизы предварительного просмотра в значках, хотя фактическая настройка остается нетронутой. Чтобы отключить предварительный просмотр (в отличие от простого запрета пользователю изменять настройки), вам также необходимо добавить следующие строки в konqiconviewrc:
[Settings]
PreviewsEnabled[$i]=false
acton/sharefileОтключает общий доступ к файлам из пользовательского интерфейса, но вы также можете полностью отключить общий доступ к файлам.
action/sendURLОтправить адрес ссылки
action/sendPageОтправить файл
action/devnewCreate New -> Device
action/incIconSizeУвеличить размер значка
action/decIconSizeУменьшить размер значка
action/goВсе меню Переход
action/configdesktopНастроить рабочий стол в меню ПКМ, см. также Ограничения панели управления
action/executeshellcommandВ меню инструментов Konqueror см. также shell_access
action/show_dotОтключает параметр отображения скрытых файлов, фактическая настройка остается неизменной. Чтобы отключить отображение скрытых файлов, добавьте следующие строки в konqiconviewrc:
[Settings]
ShowDotFiles[$i]=false

Konsole

Эти ключи могут использоваться в kdeglobals, konsolepartrc или konsolerc.

КлючДействие
action/konsole_rmbКонтекстное меню
action/settingsОтключить все меню настроек
action/show_menubarПоказать/скрыть строку меню
action/show_toolbarПоказать/скрыть панель инструментов
action/scrollbarПоказать/скрыть полосу прокрутки
action/bellНастроить действия «звонка»
action/fontНастроить шрифт
action/keyboardУстановить тип клавиатуры
action/schemaВыбрать схему для использования
action/sizeУстановить размер терминала
action/historyНастроить историю
action/save_defaultСохранить настройки по умолчанию
action/save_sessions_profileСохранить профиль сеансов
action/send_signalОтправить сигнал на текущий терминал
action/bookmarksМеню закладок
action/add_bookmarkДобавить закладку
action/edit_bookmarksИзменить закладки
action/clear_terminalОчистить текущий терминал
action/reset_clear_terminalОчистить и сбросить текущий терминал
action/find_historyНайти в истории
action/find_nextНайти следующий элемент в истории
action/find_previousНайти предыдущий элемент в истории
action/save_historyСохранить историю на диск
action/clear_historyОчистить историю текущего терминала
action/clear_all_historiesОчистить историю всех терминалов
action/detach_sessionОтсоединить текущую вкладку
action/rename_sessionПереименовать текущий сеанс
action/zmodem_uploadВыгрузить ZModem
action/monitor_activityСледить за активностью текущего терминала
action/monitor_silenceСледить за отсутствием активности текущего терминала
action/send_input_to_all_sessionsДублировать ввод во все сеансы
action/close_sessionЗакрыть текущий сеанс терминала
action/new_sessionСоздать новую терминальную сессию
action/activate_menuАктивировать строку меню
action/list_sessionsМеню списка сессий
action/move_session_leftСдвиг вкладки влево
action/move_session_rightСдвиг вкладки вправо
action/previous_sessionПерейти на вкладку слева
action/next_sessionПерейти на вкладку справа
action/switch_to_session_#Перейдите на вкладку с номером #, где # — число от 1 до 12 включительно.
action/bigger_fontУвеличить размер шрифта
action/smaller_fontУменьшить размер шрифта
action/toggle_bidiВключить/отключить поддержку двунаправленного текста

KWin

КлючДействие
action/kwin_rmbКонтекстные меню в заголовке и рамке окна

Plasma

Блокировка всей конфигурации с помощью [$i] приведет к тому, что всё будет неизменяемым. Блокировка группы (Containments) сделает эту группу виджетов неизменяемой, а блокировка самого виджета приведет к тому, что он не будет перемещаться, как и другие заблокированные виджеты.

Кроме того, доступны следующие ограничения ресурсов:

plasma/allow_configure_when_locked (начиная с Plasma 4.4): Можно ли настраивать виджеты и контейнеры при установке неизменяемости/блокировки. По умолчанию установлено значение true для удобства пользователей.

plasma/containment_actions (начиная с KDE Frameworks 5.49): Разрешать или нет Plasma действия мыши на рабочем столе и панелях (прежде всего, контекстные меню, а также колесико мыши для переключения виртуальных рабочих столов и т.д.).

plasma/plasmashell/unlockedDesktop (начиная с Plasma 5.0): Разрешать ли разблокировку виджетов в Plasma; если false, то действуют следующие ограничения:

  • Виджеты не могут быть разблокированы
  • Избранное и приложения в кнопках запуска приложений нельзя добавлять, удалять, переставлять или иным образом изменять (начиная с Plasma 5.7)
  • Кнопки запуска приложений в диспетчере задач нельзя добавлять или удалять (начиная с Plasma 5.8)

plasma-desktop/scripting_console (начиная с Plasma 4.4): Доступна ли консоль сценариев рабочего стола Plasma или нет.

plasma-desktop/add_activities (>= 4.7.1): Может ли пользователь добавлять новые действия или нет.

Другое

Plasma предлагает загрузить новые виджеты, обои, скрипты и другие сторонние дополнения из KDE Store, используя фреймворк KNewStuff (он же «Get Hot New Stuff»). Кнопки обычно имеют надпись «Get New…» со значком «звездочки». Если эта функция нежелательна, ее можно отключить с помощью следующего ключа:

ghns (начиная с KDE Frameworks 5.27): Можно ли получить доступ к диалоговому окну загрузки Get Hot New Stuff

Авторизация

Файлы приложений .desktop могут иметь дополнительное поле X-KDE-AuthorizeAction.

Если это поле присутствует, файл .desktop считается разрешенным, только если действие (действия), указанное в этом поле, было выполнено. Если перечислено несколько действий, они должны быть разделены запятыми (‘,’).

Если в файле .desktop приложения таким образом перечислены одно или несколько действий, а у пользователя нет прав хотя бы на одно из них, то приложение не появится в меню KDE, не будет разрешено его выполнение через этот файл .desktop и не будет использоваться KDE для открытия файлов соответствующих mime-типов. Например,

[KDE Action Restrictions][$i]
user/root=false

скроет из меню приложения, у которых поле заполнено следующим образом:

X-KDE-AuthorizeAction = user/root

Диалог Файл {#file_dialog}

Эти ключи отключают действия, которые находятся в файловом диалоге KDE. Чтобы использовать их, создайте секцию в kdeglobals, которая выглядит следующим образом:

[KDE Action Restrictions][$i]
action/<key>=false
КлючДействие
action/homeПерейти в домашний каталог
action/upПерейти в родительский каталог
action/backПерейти в предыдущий каталог
action/forwardПерейти в следующий каталог
action/reloadОбновить каталог
action/mkdirСоздать новый каталог
action/toggleSpeedbarПоказать/скрыть боковую панель
action/sorting menuПараметры сортировки
action/short viewВыберите краткий вид
action/detailed viewВыбрать подробный вид
action/show hiddenПоказать/скрыть скрытые файлы
action/previewПоказать/скрыть превью
action/separate dirsПоказать/скрыть отдельные каталоги

Печать

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

[KDE Resource Restrictions][$i]
print/<resource key>=false

Обратите внимание, что в конфигурационном файле все ключи печати начинаются с print.

  • print/copies: Отключает панель, которая позволяет делать более одной копии.
  • print/dialog: Отключает весь диалог печати. При выборе опции печати выбранный документ будет немедленно распечатан с использованием настроек по умолчанию. Убедитесь, что выбран общесистемный принтер по умолчанию. При активации этого ограничения никакие настройки конкретного приложения не выполняются.
  • print/options: Отключает кнопку выбора дополнительных параметров печати.
  • print/properties: Отключает кнопку для изменения свойств принтера или добавления нового принтера.
  • print/selection: Отключает возможность выбора (псевдо) принтера или изменения свойств принтера. Перед отключением этой опции убедитесь, что выбран правильный принтер по умолчанию. Отключение этой опции также отключает функции print/system, print/options и print/properties.
  • print/system: Отключает возможность выбора бэкенда системы печати, например, CUPS. Рекомендуется отключить эту опцию после настройки правильной системы печати.

Ограничения ресурсов

Приложения KDE могут использовать многие типы ресурсов, такие как данные конфигурации, кэши, реестры плагинов и т.д. Они загружаются как из общесистемных, так и из пользовательских мест на диске. Можно ограничить использование каталогов ресурсов для каждого пользователя, не позволяя пользователям добавлять или изменять существующие общие ресурсы.

Это достигается путем создания в конфигурационном файле следующего раздела:

[KDE Resource Restrictions][$i]
<resource key>=false

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

КлючКаталогПредставляет
alln/aВсе ресурсы, перечисленные в таблице
autostartshare/autostartПриложения для запуска при входе в систему
datashare/appДанные приложений
data_<appname>share/appsДанные приложения для названного приложения 
htmlshare/doc/HTMLФайлы HTML
iconshare/iconИконки
configshare/configКонфигурации приложений
pixmapshare/pixmapsКартинки
xdgdata-appsshare/applicationФайлы приложений .desktop
soundshare/soundЗвуковые файлы
localeshare/localeДанные локализации
servicesshare/servicesРеестр протоколов, плагинов, kparts, панелей управления и т.д.
servicetypesshare/servicestypesОпределения подключаемых модулей, указанные в записях реестра служб
mimeshare/mimelnkОпределения MIME-типов
wallpapershare/wallpapersИзображения обоев рабочего стола
templatesshare/templatesШаблоны документов
exebinИсполняемые файлы
liblibБиблиотеки

Скринсейверы

В kdeglobals в группе [KDE Action Restrictions]:

  • opengl_screensavers: Определяет, разрешено ли использовать экранные заставки OpenGL.
  • manipulatescreen_screensavers: Определяет, разрешено ли использовать хранители экрана, которые манипулируют изображением на экране (например, перемещают фрагменты экрана).

Автоматическое завершение сессии

В kscreensaverrc:

[ScreenSaver]
AutoLogout=true
AutoLogoutTimeout=600

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

Ограничения возможностей сессии

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

[KDE Action Restrictions][$i]
<key>=false

custom_config: должен ли учитываться параметр командной строки —config. Параметр командной строки —config может быть использован для обхода заблокированных конфигурационных файлов.

editable_desktop_icons: можно ли перемещать значки на рабочем столе. Чтобы предотвратить добавление, удаление или переименование значков, следует установить для папки рабочего стола режим «только для чтения». (начиная с Plasma 5.14)

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

lineedit_reveal_password: могут ли поля ввода пароля иметь кнопку, позволяющую показать пароль в виде обычного текста. (начиная с KDE Frameworks 5.30 и/или Plasma 5.9)

action/lock_screen: может ли пользователь блокировать экран.

logout: может ли пользователь выйти из сеанса Plasma.

movable_toolbars: может ли пользователь перемещать панели инструментов. См. также action/options_show_toolbar.

run_command: можно ли использовать «Выполнить команду» (Alt-F2).

Note: Чтобы также отключить запуск контекстного меню рабочего стола, необходимо выполнить команду action/run_command в [KDE Action Restrictions].

run_desktop_files: могут ли пользователи выполнять файлы рабочего стола, которые не являются частью рабочего стола по умолчанию, меню KDE, зарегистрированных служб и автозапускаемых служб.

  • Рабочий стол по умолчанию включает файлы в каталоге .local/share/kdesktop/Desktop, но не файлы в каталоге $HOME/Desktop.
  • Меню KDE включает в себя все файлы из каталогов $KDEDIR/share/applnk и $XDGDIR/applications3
  • Зарегистрированные сервисы включают все файлы в каталоге `$KDEDIR/share/services
  • Автозапускаемые службы включают все файлы в каталоге $KDEDIR/share/autostart, но не файлы в каталоге $KDEHOME/Autostart

shell_access: Можно ли запустить оболочку, пригодную для ввода произвольных команд. Это также определяет, можно ли использовать «Выполнить команду» (Alt-F2) для запуска shell-команд и произвольных исполняемых файлов. Также и исполняемые файлы, помещенные в папку автозапуска пользователя, больше не будут выполняться. Приложения по-прежнему могут быть автозапущены путем размещения файлов .desktop в каталоге .local/share/autostart. См. также run_desktop_files.

Возможно, вы также захотите активировать следующие ограничения ресурсов:

  • appdata_kdesktop — Для ограничения рабочего стола по умолчанию.
  • apps — Для ограничения меню KDE.
  • xdgdata-apps — Для ограничения меню KDE.
  • services — Для ограничения зарегистрированных сервисов.
  • autostart — Для ограничения автозапуска служб.

В противном случае пользователи смогут выполнять файлы .desktop, помещая их, например, в .local/share/kdesktop/Desktop

skip_drm: может ли пользователь отказаться от проверки DRM. На момент написания статьи это относится в первую очередь к форматам документов с механизмом DRM (например, PDF).

action/start_new_session: может ли пользователь начать новую сессию.

action/switch_user: разрешено ли переключение пользователей.

Телеметрия

Хотя по умолчанию телеметрия отключена, пользователь может включить ее в приложениях.

Для принудительного глобального отключения укажите в /etc/xdg/KDE/UserFeedback.conf:

[UserFeedback]
Enabled=false

1 Посмотреть значения переменных окружения можно командой printenv или env

2 По умолчанию (если не указано в переменных окружения) XDG_CONFIG_HOME=»$HOME/.config» и XDG_DATA_HOME=»$HOME/.local/share»

3 $KDEDIR по умолчанию — /usr 

Опубликовано Михаил К в Linux, 0 комментариев
Локализация имен папок

Локализация имен папок

Как известно, в macOS имена ряда папок изменяются в зависимости от выбранного предпочтительного языка (одновременно с изменением языка интерфейса). Например, Library → Библиотеки, Movies → Фильмы и т. д.

Если точнее, изменяется отображение имен этих папок в графическом интерфейсе, а в Терминале мы всегда увидим исходные английские (в отличие от, например, Linux).
Так вот, однажды я обнаружил, что у свежесозданного пользователя русскими стала только часть имен стандартных папок: Фильмы, Музыка, Изображения. При этом другие остались, по-прежнему, английскими: Documents, Downloads, Desktop. Как быть?

«Ремонт» оказался предельно простым. Для этого нужно знать маленький секрет: в глубинах папки System лежит SystemFolderLocalizations, где описано, как на разных языках должны называться системные папки. А про то, что нужно этим «словариком» воспользоваться, Finder узнает, увидев внутри папки файлик с именем .localized (напомню, что в unix-подобных ОС файлы, имена которых начинаются с точки, являются скрытыми).

Значит, достаточно положить в каждую «непереведенную» папку пустой файл с таким именем (можно, конечно, и не пустой). Проще всего это сделать консольной командой:

1. переходим в нужную папку, например, в папку Downloads:

cd ~/Downloads

(значок ~ обозначает домашний каталог текущего пользователя)

2. создаем файл:

touch .localized

Или сразу:

touch ~/Downloads/.localized

Если имена сразу не поменялись (в моем случае, например, прежние имена остались на боковой панели окон Finder), можно принудительно перезапустить Finder:

killall Finder

PS
Честно говоря, написание этого текста заняло в несколько раз больше времени, чем «лечение» четырех папок 😉

Опубликовано Михаил К в Mac OS X / macOS
Как «подружить» Linux с iCloud

Как «подружить» Linux с iCloud

tux-icloudТак сложилось, что я пользуюсь разными операционными системами. И периодически приходится решать вопросы их «мирного сосуществования».

В частности, у меня есть аккаунт iCloud (еще со времен «дот-Мак»), и я активно пользуюсь календарем iCal. С другой стороны, роль «мобильного офиса» играет дешевый нетбук с Xubuntu: почта, web, несложные офисные задачи — для этого его ресурсов более чем достаточно.

Конечно, у сервисов iCloud есть web-интерфейс… Но я привык пользоваться специализированными клиентами. В частности, почту автоматически собирает практически постоянно работающий Thunderbird. В свежей (38) версии в нем сразу установлен плагин календаря Lightning. Логично было бы синхронизировать его с Календарем iCloud. Это вполне реально… но требует некоторых неочевидных действий.

Коротко опишу процесс настройки работы и с почтой, и с календарями iCloud в Thunderbird.

Почта iCloud

Тут проще. Настройки официально документированы (ещё бы!). Но вводить их в Thunderbird нужно вручную. Мастер автоматической настройки, замечательно подхватывающий сервера, например, Яндекс-почты, здесь бессилен (хотя и упорно пытается «помогать»). Итак, ручками прописываем:

  • ваше имя, как его видят получатели;
  • адрес (ваше_имя@icloud.com);
  • сервер входящей почты: IMAP, imap.mail.me.com, порт 993, SSL/TLS, аутентификация простым паролем, логин — ваше_имя (без «собачки» и домена), пароль — ваш_пароль_iCloud;
  • сервер исходящей почты (SMTP): smtp.mail.me.com, порт 587, STARTTLS, аутентификация простым паролем, логин — ваше_имя (без «собачки» и домена), пароль — ваш_пароль_iCloud.

Тщательно проверяем то, что получилось — у Thunderbird есть дурная привычка «помогать», меняя значения на такие, которые ему кажутся более правильными 😉

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

Отправляем тестовое письмо на какой-нибудь другой свой адрес. Если отправка не происходит — перепроверяем настройки.

Почта заработала — переходим к календарям…

Календари iCloud

…и тут у меня есть две новости; как обычно, одна из них — хорошая. Календари iCloud используют для синхронизации совершенно стандартный CalDAV, с которым замечательно умеет работать и Lightning, и многие другие календари.

Плохая новость: никаких официальных способов узнать URL календарей Apple не предоставляет.

Однако, решение есть! Спасибо Даниелю Мюльбахлеру (Daniel Mühlbachler), который написал  PHP-скрипт и Java-программу, позволяющие добыть нужные адреса.

Итак,

  • переходим на страницу проекта icloud в GitHub и скачиваем архив groovy_java/gui-2.0.1.zip
  • распаковываем его (расположение роли не играет)
  • в подкаталоге bin находим файл gui (или gui.bat, если программулина запускается под Windows) и запускаем его в консоли:

icloud01

  • в полях Apple ID и Password вводим, соответственно, логин и пароль к iCloud. Сервер из списка выбираем любой.
  • щелкаем Get calendar URLs
  • через некоторое время в нижней панели окна появится список адресов:

icloud02

Среди этих адресов выбираем те, которые относятся к нужным календарям (по именам). К сожалению, копировать из этого окна не удается, так что придется переписывать длинную буквенно-цифровую последовательность вручную.

(Примечание: в качестве «бонуса» в списке обнаруживается и адрес Контактов — CardDAV)

Теперь возвращаемся к Thuderbird, переходим на вкладку календарей. Создаем новый календарь. Для него указываем расположение «в интернете» и на следующей странице — найденный нами ранее URL. Стараемся при вводе не ошибаться — после создания календаря редактировать поле адреса будет невозможно!

Когда щелкнем «Готово», после непродолжительной паузы появится окно с запросом логина и пароля iCloud. После их ввода еще небольшая пауза — и на экране появляются записи из Календаря iCloud. Если, конечно, вы не допустили ошибки при вводе URL 😉 (Если не повезло — удаляем календарь и создаем его заново. Без ошибок)

Если календарей, которые нужно синхронизировать, несколько — аналогично создаем все остальные.

Поздравляю! Вы настроили Thunderbird для работы с почтой и календарями iCloud!

Опубликовано Михаил К в Linux
Как векторизовать растровое изображение в Inkscape

Как векторизовать растровое изображение в Inkscape

Нередко перед нами встает задача подготовить векторное изображение. При этом в качестве оригинала уже есть картинка, нарисованная в графическом редакторе или отсканированная с «бумажного» рисунка.

Очень просто решить эту задачу можно, воспользовавшись инструментом, встроенным в Inkscape. Итак:

1. Запускаем Inkscape и импортируем имеющуюся растровую картинку (Файл → Импортировать)

inkscape — импорт

2. Выделяем эту картинку, щелкнув по ней «Стрелкой» (Если это единственный объект, можно воспользоваться командой Правка → Выделить все)

3. Открываем окно векторизатора (Контур → Векторизировать растр (Shift-Alt-B))

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

Настройки растеризации

Проверяем получающийся результат, щелкая кнопку «Обновить». Если он не устраивает, корректируем настройки.

5. Щелкаем «ОК». По окончании векторизации закрываем окно.

6. В результате получаем объединенные в группу векторные объекты, размещенные поверх растрового изображения. Теперь растровый оригинал можно удалить, а с векторными объектами работать обычным для Inkscape образом.

Заметьте, что векторизатор не способен распознать плавные переходы цвета — он заменяет их «стопками» объектов со сплошной заливкой разных оттенков. Так что  далеко не всегда результат будет пригоден для использования без ручной коррекции контуров.

Вот пример работы программы (вверху исходная картинка, внизу — векторизованная):

«До» и «После»
Опубликовано Михаил К в Графика
Об установке WINE@Etersoft…

Об установке WINE@Etersoft…

Получил на днях для школы бесплатную лицензию на WINE@Etersoft.  Естественно, сразу же попробовал установить.

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

Не запускается!

Ни одна программа «с рюмкой», появившаяся после установки  WINE@Etersoft в меню программ, не запускается!

Хорошо, что меня не пугает командная строка. Попытка запуска wine из окна терминала сразу всё объяснила. В чём же было дело?

У меня и раньше был установлен WINE. Обычный, поставившийся с дистрибутивом. Перед установкой WINE@Etersoft я его, естественно, на всякий случай удалил. Но папка с настройками в моем домашнем каталоге осталась. И вот эти-то настройки WINE@Etersoft не смог заменить.

Итак, вывод:

если у вас был установлен WINE, и установленный WINE@Etersoft отказывается запускаться, первым делом нужно зайти в свою домашнюю папку (/home/ваш_логин) и удалить (или перенести куда-нибудь) невидимую папку .wine, с помощью вашего файлового менеджера либо командой:

rm -rf ~/.wine

Вот уже если это не поможет, тогда придется «копать глубже». 😉

Опубликовано Михаил К в Linux, 0 комментариев