web-dev-qa-db-fra.com

Utilisez sudo en combinaison avec libnss_switch

J'ai mis en œuvre libnss_wrapper Dans le point d'entrée d'un conteneur Docker, afin de "créer" l'utilisateur passé via docker run -u UID. Ce script crée également un /etc/sudoers.d/USER Fichier pour permettre l'accès sudo.

Quand j'essaie de courir Sudo, je reçois l'erreur Sudo: you do not exist in the passwd database.

Que puis-je faire pour dire sudo à utiliser $NSS_WRAPPER_PASSWD à la place de /etc/passwd?

Edit Comme @ Todd-C-Miller a fait remarquer, cela n'est pas possible. Comme il pointé , on peut utiliser des modules NSS appropriés comme NSS-Altfiles (Fedora, ...) ou NSS-EXTRAUSERS (Debian, Ubuntu) qui permettent l'utilisation si des fichiers dans des endroits alternatifs.

3
darkdragon

Étant donné que NSS_WRAPPER s'appuie sur ld_preload, vous ne pouvez pas l'utiliser avec sudo. La liaison dynamique ignore ld_preload pour les exécutables SET-User-ID comme sudo (vous auriez le même problème avec quelque chose comme SU).

Voir la description de "mode sécurisé" dans le manuel LD.SO pour plus d'informations.

3
Todd C. Miller