0

更大的目标:

编写针对课堂学校环境的批处理用户管理器。

问题

我想编写一个用户管理器,它使用 GUI 为课堂环境添加、管理和删除用户。我正在开发的程序是ltsp-manager

到目前为止,所有的用户管理都是通过执行 bash 命令来完成的。来自 python 脚本。这意味着所有的 GUI 都必须以 root 身份运行,并且一切都是手工制作的。

目标

创建一个处理所有帐户管理的 Dbus 服务,并让 GUI 以不时需要密码的普通用户身份运行。

我环顾四周,发现org.freedesktop.Accounts已经有一个服务在做很多我想做的功能。但是,它也缺少一些。完全缺少的是组的管理。

使用该org.freedesktop.Accounts功能并添加一些其他功能/方法的好方法是什么?

思念至今

我想到的事情包括:

  1. 只是重做所有事情——这意味着很多重复的工作。
  2. 复制接口并编写调用原始接口的函数
  3. 编写一个只实现附加功能而不触及原始功能的服务。然后客户端将使用原始服务和新编写的服务。

我所有的测试实验都完成了python3pydbus这似乎是许多人中最好的选择。

我从未编写过真实世界的 dbus 服务——尽管实验确实在d-feet. 这个问题实际上并不是我需要输入什么类型的问题,而是一个最佳实践问题。

4

1 回答 1

0

最好的长期答案是在上游修复accountsservice以实现组支持。已经为此努力了;它只需要有人把它捡起来并完成它。accountservice是提供org.freedesktop.Accounts.

其他方法不好,因为:

只是重做所有事情——这意味着很多重复的工作。

正如您所说,这是很多重复的工作,然后您必须全部维护。

复制接口并编写调用原始接口的函数

这意味着您必须永远跟上帐户服务的更改和添加。

编写一个只实现附加功能而不触及原始功能的服务。然后客户端将使用原始服务和新编写的服务。

这不会带来任何额外的维护问题,但意味着您的服务无法与 accountsservice 很好地集成。例如,在 D-Bus 对象的更新和 accountsservice 对象的更新之间可能存在竞争条件。您将无法与 accountservice 的(许多)其他用户分担组代码的维护负担。

于 2018-11-20T23:11:04.047 回答