Как дать демону запрос на ввод пароля (в Xsession, keyloggersafe)?

Экспозиция:

  • Работа внутри XSession.
  • Некоторым (фоновым) деанам необходимо запросить ввод пароля.

Как я могу заставить демона запросить у меня пароль, используя всплывающее окно Xsession?

Нормальный нормальный демона не имеет связи с X сеансом, что затрудняет появление всплывающего окна подсказки.

Некоторые идеи для ответов:

  • небольшая программа, которая выполнила (fork / child from) демона, который лучше всего отображает всплывающее окно X-prompt. чем меньше, тем лучше 🙂
  • безопасность. Несмотря на то, что я сомневаюсь в возможном, любое решение, которое гарантирует, что при вводе пароля никакое другое приложение, работающее в этом X-сеансе, не может быть использовано.

One Solution collect form web for “Как дать демону запрос на ввод пароля (в Xsession, keyloggersafe)?”

Такие проблемы обычно выполняются с помощью двух автономных двоичных файлов: демон службы и пользовательского интерфейса, которые взаимодействуют через сокет домена UNIX (или сетевой сокет, если они не работают на одном компьютере). Первым примером может быть OpenSSH – проверить, как ssh-agent , ssh-add и ssh взаимодействуют, чтобы понять, как это можно сделать. Замените «UNIX-сокет» на « D-Bus », если вы хотите стать модным или вам нужна дополнительная функциональность, которую вам нужно будет реализовать.

Если запрос действия поступает от самого демона (который, если я правильно понимаю), является вашим конкретным случаем, это немного сложнее. Часть пользовательского интерфейса должна появляться иногда во время X-сессии, регистрироваться с демоном, и когда демон решает, что ему нужен какой-то ввод, он просит часть пользовательского интерфейса делать свои вещи. Последние два предложения на самом деле могут оказаться полезными для D-Bus.

С другой стороны, вы должны тщательно подумать, действительно ли демон активно запрашивает пароль – это правильный способ ТМ делать вещи – демоны – это обычно службы, которые отвечают на запросы, а не генерируют их. Возможно, было бы лучше, если бы пользовательский интерфейс активно ввел пароль, когда пользователь решил, что пришло время сделать это. Я не говорю, что это единственный хороший подход, просто его следует считать первым в первую очередь.

Что касается безопасности, то все зависит от того, насколько параноид вы хотите получить. С помощью X вы можете захватить клавиатуру (см. XGrabKeyboard(3) ), которая должна обеспечить вам разумный уровень безопасности. Или лучше поставить: если вы не используете его, у вас нет контроля над паролем. Опять же, ssh – хороший пример: взгляните на хелпер x11-ssh-askpass . Его домашняя страница , похоже, больше не работает, но вы можете найти источники во многих местах, например, в openSUSE BuildService .

Вы можете даже использовать его напрямую, так как все, что он делает, это захват клавиатуры и вывод введенного пароля на его стандартный вывод, поэтому вам нужно только создать помощника справки и проверить его stdout . Если я правильно помню, readpass.c в OpenSSH должен дать вам некоторое представление о том, как это сделать.

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

  1. несколько проектов, которые обычно считаются достаточно безопасными, такие как OpenSSH и GPG, используют этот подход.

  2. Безопасность сложна. Выкатывание собственных решений безопасности обычно заканчивается неприятностями (или катастрофами) так или иначе (это также может стать обычным предприятием: «У меня такая классная вещь». «Ого, давайте сделаем это новым инструментом компании »- 5 лет спустя:« Это полностью нерасторжимо / сломанно / небезопасно / … – как мог кто-нибудь сделать это общеорганизационным решением ?! » Замените« решение всей компании »на« наш флагманский продукт »на несколько часов смеха ). Также ознакомьтесь с каноническими вопросами безопасности SE Q & As: https://security.stackexchange.com/questions/18197/why-shouldnt-we-roll-our-own и https://security.stackexchange.com/questions/2202/lessons- наукоемкие и ошибочные представления относительно шифрования и криптологии .

  3. Захват клавиатуры не говорит ничего о каком-либо другом приложении, которое не подслушивает события на клавиатуре где-то глубже в стеке (то есть под слоем X-приложений). Но опять же, такое приложение, скорее всего, потребует какого-то доступа к корневому каталогу, поэтому, если бы у вас было что-то подобное в системе, вы могли бы также поместить пароли в текстовый файл с именем passwords.txt в ваш домашний каталог).

  • Как изменить TTY по умолчанию после загрузки?
  • Как использовать все кнопки MMC Gaming Mouse от SteelSeries Cataclysm в Xorg (GNOME)?
  • Возможность штампов времени в файле .xsession-errors?
  • XServer: как проверить, кто / что использует отображение: N
  • X-сервер, блокировка клавиатуры и мыши с поврежденным дисплеем
  • Подключение к KVM без использования графического интерфейса CentOS 6.4 с использованием MobaXterm
  • Изменение конфигурации сервера X во время выполнения
  • Удаленный запуск LXDE через SSH
  • Debian 7 - Startx не запускает систему
  • что означает управление доступом Xserver
  • минимальная установка X.org xServer на Debian Wheezy
  • Linux и Unix - лучшая ОС в мире.