Расширить сервис Dbus

Большая цель:

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

Эта проблема

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

До настоящего времени все управление пользователями осуществлялось с помощью команд bash. Из скрипта Python. Это означает, что весь графический интерфейс должен работать от имени пользователя root, и все сделано вручную.

Цель

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

Я оглянулся и обнаружил, что в org.freedesktop.Accounts уже есть служба, выполняющая множество функций, которые я хочу сделать. Однако, это также испытывает недостаток в некоторых. Что-то, чего полностью не хватает, - это управление группами.

Какой хороший способ использовать org.freedesktop.Accounts функциональность и добавить некоторые дополнительные функции / методы?

Мысли пока

Вот что мне пришло в голову:

  1. просто переделывать все - много дублирующихся работ.
  2. скопируйте интерфейсы и напишите функции, которые вызывают исходные
  3. написать сервис, который реализует только дополнительные функции, не касаясь оригинальных. Затем клиент будет использовать исходный сервис и только что написанный.

Все мои тестовые эксперименты сделаны с python3 а также pydbus который кажется лучшим выбором среди многих.

Я никогда не писал реальный сервис dbus - хотя эксперименты показывают некоторые результаты в d-feet, Этот вопрос на самом деле не является тем, что мне нужно, чтобы напечатать тип вопроса, а скорее вопросом наилучшей практики.

1 ответ

Лучшим долгосрочным ответом было бы исправить восходящее обслуживание аккаунтов для поддержки групп. Уже есть работа для этого; ему просто нужно, чтобы кто-то взял его и закончил. accountservice - проект, который обеспечивает каноническую реализацию org.freedesktop.Accounts,

Другие подходы плохие, потому что:

просто переделывать все - много дублирующихся работ.

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

скопируйте интерфейсы и напишите функции, которые вызывают исходные

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

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

Это не связано с какими-либо дополнительными проблемами обслуживания, но означает, что ваш сервис не будет хорошо интегрирован с обслуживанием учетных записей. Например, могут быть условия состязания между обновлениями ваших объектов D-Bus и обновлениями объектов обслуживания учетных записей. Вы не сможете разделить бремя обслуживания кода групп со многими пользователями аккаунта.

Другие вопросы по тегам