Jestem piaskownica R na Ubuntu 11.10 przy użyciu apparmor. Jedną rzeczą, jaką zauważyłem jest to, że za każdym PNG lub pdf działce że R tworzy, pokazuje ostrzeżenie:R i getpwuid()
(process:4589): GLib-WARNING **: getpwuid_r(): failed due to: Permission denied.
Jednak mimo odczytu do/etc/passwd odmawia, wszystko wydaje się działać perfekcyjnie. Nie zamierzam udzielać R tych zezwoleń, ponieważ wydaje się, że nie potrzebuję tego, co chcę robić. Jednak powtarzające się ostrzeżenie jest nieco denerwujące.
Szybkie grep z „getpwuid” w R/src pokazuje trzy miejsca, gdzie to się nazywa:
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());
Jednak nie bardzo dla mnie jasne, co to robi.
Pytania:
- Dlaczego R potrzebują dostępu do pliku passwd tworzenia działkę?
- Czy jest jakiś sposób, aby uniemożliwić R próbie wywołania getpwuid_r() podczas zapisu do urządzenia png lub pdf (bez rekompilacji R)?
Chciałbym zobaczyć wynik "strace (1)" podczas generowania obrazu; Trudno mi zrozumieć, dlaczego R chciałby znać nazwę użytkownika, katalog macierzysty, GECOS lub powłokę, chociaż powłoka jest najbardziej prawdopodobną rzeczą, o którą chodzi. Czy twój profil R wymaga wykonania dostępu do '/ bin/bash' lub'/bin/dash'? (Zastrzeżenie: jestem częścią zespołu AppArmor.) – sarnold
R czyta dużo plików '~/.R *', nawet z '~/.R/*'. Ale myślałem, że robi to tylko na starcie. OTOH ~/.Rhistory etc zostały dołączone, ale znowu - pełna nazwa pliku jest prawdopodobnie obliczana tylko raz. –
Albo, jeśli mógłbyś zaproponować mi szybką metodę samodzielnego odtworzenia tego, byłoby fajnie. Nie znam prawie nic o R (pomimo kilku nieudanych prób nauki). – sarnold