R и getpwuid () - PullRequest
       10

R и getpwuid ()

5 голосов
/ 13 марта 2012

Я в песочнице R на Ubuntu 11.10, используя apparmor.Одна вещь, которую я заметил, состоит в том, что для каждого png или pdf-графика, который создает R, он показывает предупреждение:

(process:4589): GLib-WARNING **: getpwuid_r(): failed due to: Permission denied.

Однако, хотя доступ для чтения к / etc / passwd запрещен, кажется, что все работает отличнохорошо.Я не планирую давать R эти разрешения, так как это кажется ненужным для того, что я хочу сделать.Однако повторяющееся предупреждение несколько раздражает.

Быстрый grep "getpwuid" в R / src показывает три места, где он называется:

r-base-2.14.2/src/main/platform.c:  stpwd = getpwuid(sb.st_uid);
r-base-2.14.2/src/unix/sys-unix.c:  stpwd = getpwuid(getuid());
r-base-2.14.2/src/unix/sys-unix.c:  stpwd = getpwuid(geteuid());

Однако мне не совсем понятно, что это делает.

Вопросы:

  • Почему R нужен доступ к файлу passwd для создания графика?
  • Можно ли как-то помешать R попытаться вызвать getpwuid_r () при записина устройство png или pdf (без перекомпиляции R)?

1 Ответ

0 голосов
/ 06 марта 2013

Внутренняя функция R file.info (do_fileinfo в gdb), по-видимому, обнаруживает и возвращает много информации о файлах, включая имя пользователя.

Я предполагаю, что в основном это делается для каждого файла, загруженного в R, но можетбыть только во время загрузки пакета.

Для этого используется getpwuid.

У меня сейчас проблемы с производительностью в R - из-за длинных ответов NIS с задержкой.Во время загрузки пакета он ищет одного и того же пользователя много раз, что вызывает у меня всевозможные проблемы.

Хотелось бы, чтобы он кешировался.

...