It fizzled out. To recap:
* One problem is that sudo puts an entry into /etc/nsswitch.conf that
has no business of being there in the first place since NSS is a
mechanism for order-invariant entity resolving whereas sudo uses its
plugins for combined entity resolution and policy rule evaluation
which is not order-invariant. Also, despite the manpage for
nsswitch.conf wrongly claiming the opposite, as far as I can tell
sudo never uses NSS facilities for its plugins, but instead
implements its own in plugins/sudoers/sudo_nss.{c,h} which doesn't
make sense to me.
* Changes to that entry are not preservable across removals/purges
which violates DPM.
* sudo-ldap should be transformed into a package that only ships the
plugin.
* Sudo's approach to plugins is unlike anything I've seen.
The goal(s) for bookworm should/could be:
* Copy the entry from /etc/nsswitch.conf to
e.g. /etc/sudo/plugins.conf and patch sudo to use that and simply
ignore/warn about the other thereafter. The points below could be
left for trixie, but this one is a must since any error here has the
potential to break libc's NSS for everyone. No longer having to
worry about that will make life much easier.
* Try to split the packages sudo and sudo-ldap into sudo, sudo-common
and sudo-plugin-ldap. sudo-common must ship the update-sudo-plugins
script that regenerates /etc/sudo/plugins.conf from whatever
implements change-preserving configuration of the plugins (note:
plugin order matters, so that has to be preserved, too; sudo also
implements a subset of the nsswitch.conf short-circuting behaviour
which also needs to be covered; some plugins are in mutual conflict,
e.g. the SSSD and LDAP plugins; no idea how to best express/default
that (maybe some preference score)).
Oddities in the architecture of the plugin APIs might make this very
difficult or even impossible.
Also, to load a plugin, it has to be configured explicitly in
/etc/sudo.conf which the user has to do by hand.
/etc/sudo/plugins.conf only configures which facilities will
actually be used and in what order.
* Plugin packages then have to call update-sudo-plugins upon
installation/removal. During their first installation they should
infer their configuration state from what's in
/etc/sudo/plugins.conf already. sudo-common probably needs to
provide another helper script for that.
* A problem is that under sudo-ldap the LDAP plugin was always loaded
because it had the same name as the non-LDAP plugin in the sudo
package. Setups which don't have it explicitly enabled in
/etc/sudo.conf (i.e. essentially all of them) could thus break
during the migration since the LDAP plugin will be named to
sudoers_ldap.so afterwards. IIRC the only way to prevent that is to
patch sudo to first try loading sudoers_ldap.so before sudoers.so if
it is installed and issue a warning about this fallback behaviour
being deprecated.
Additional matters:
* The Python plugin should probably allow referencing the exact Python
version from the beginning, e.g. sudo-plugin-python3.9. But since
it's considered a beta feature this is not urgent.
Regards.