Sono sandboxing R su Ubuntu 11.10 utilizzando apparmor. Una cosa ho notato è che per ogni png o pdf trama che R crea mostra l'avviso:R e getpwuid()
(process:4589): GLib-WARNING **: getpwuid_r(): failed due to: Permission denied.
Tuttavia, anche se l'accesso in lettura a/etc/passwd è negato, tutto sembra funzionare perfettamente bene. Non ho intenzione di dare a R queste autorizzazioni, in quanto sembra non necessario per quello che voglio fare. Tuttavia, l'avviso ricorrente è alquanto fastidioso.
Un rapido grep di "getpwuid" in R/src mostra tre luoghi in cui è chiamato:
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());
Tuttavia, non molto chiaro per me quello che fa.
Domande:
- Perché R bisogno di accedere al file passwd per la creazione di un complotto?
- C'è un modo per impedire a R di provare a chiamare getpwuid_r() durante la scrittura su un dispositivo png o pdf (senza ricompilare R)?
Sarei curioso di vedere l'output di 'strace (1)' durante la generazione dell'immagine; è difficile per me capire perché R vorrebbe conoscere il nome, l'homedirectory, il GECOS o la shell dell'utente, sebbene la shell sia la cosa più probabile che sia dopo. Il tuo profilo R richiede l'accesso in esecuzione a '/ bin/bash' o'/bin/dash'? (Disclaimer: faccio parte del team AppArmor.) – sarnold
R legge molti file '~/.R *', anche da '~/.R/*'. Ma ho pensato che lo facesse solo all'avvio. OTOH ~/.Rhistory ecc sono accodati, ma ancora una volta - il nome file completo è probabilmente calcolato una sola volta. –
Oppure, se potessi suggerire un modo rapido per riprodurlo da solo, sarebbe perfetto. Non conosco quasi nulla di R (nonostante diversi timidi tentativi di apprendere). – sarnold