Я реализовал libnss_switch
в точке входа в докер-контейнер, чтобы «создать» пользователя, переданного через docker run -u UID
. Этот скрипт также создает файл /etc/sudoers.d/USER
, чтобы разрешить доступ sudo.
Когда я пытаюсь запустить sudo
, я получаю ошибку sudo: you do not exist in the passwd database
.
Что я могу сделать, чтобы сказать sudo использовать $NSS_WRAPPER_PASSWD
вместо /etc/passwd
?
Поскольку nss_wrapper использует LD_PRELOAD, вы не можете использовать его с sudo. Динамический компоновщик игнорирует LD_PRELOAD для исполняемых файлов set-user-ID, таких как sudo (у вас будет такая же проблема с чем-то вроде su).
Дополнительную информацию см. в описании «Режим безопасного выполнения» в руководстве ld.so.