локальный процесс переопределения разрешения имен? - PullRequest
2 голосов
/ 28 октября 2011

У меня есть тестовый код, который я хочу разрешить паре имен хостов в loopback во время тестирования.При развертывании этот код будет использовать обычное разрешение имен системы в зависимости от ситуации.Хост тестирования и развертывания - последние дистрибутивы Linux (например, SLES11SP1).

Я бы хотел переопределить разрешение имени хоста для одного процесса, не будучи суперпользователем.Есть ли способ манипулировать поведением nsswitch / hosts таким узким образом?

Да, конечно, я мог бы переопределить сами имена хостов, но я предпочитаю этого не делать (если эта функция на самом деле неt available).


РЕДАКТИРОВАТЬ:

glibc HOSTALIASES функция звучит именно так, как я хочу, но ее доступность / эффективность кажется несовместимым среди опрошенных мною хостов,В какой-то момент он был добавлен в список небезопасных переменных среды.Но значит ли это, что он игнорируется глобально или только в suid-файлах?Будет ли это работать для программ, которые getnameinfo ()?


Больше править: IMO, HOSTALIAS выигрывает руки вниз.Отключение nscd - это обходной путь для платформ, которые его не уважают, таких как моя (SuSE).И, возможно, они выпустят исправление.

Ответы [ 3 ]

1 голос
/ 29 октября 2011

Предполагая, что вы хотите перехватить, например, gethostbyname(), и вернуть ему 127.0.0.1 для определенных имен хостов ...

Если ваш код C ++, простейшим ответом может быть использование gMock .

Если вы не можете, вы можете вставить gethostbyname.Образец вставки задокументирован здесь .

1 голос
/ 16 ноября 2011

Брайан, другой вариант будет использовать chroot.Вы можете создать каталог с кучей монтирования --rbind для каждого из каталогов usr, lib, home и т. Д. - достаточно для имитации рабочего корневого каталога.Затем используйте команду mount -t aufs для «монтирования» существующего и т. Д. Вместе с записываемым пустым слоем.По сути, после всего этого все, что вы изменяете в etc, в конечном итоге меняется только внутри среды chroot.Таким образом, вы можете переопределить и смоделировать все виды окружения.Если это представляет какой-либо интерес и требует от меня дальнейших уточнений, сообщите мне.

1 голос
/ 28 октября 2011
...