5

apparmor を使用して Ubuntu 11.10 で R をサンドボックス化しています。私が気づいたことの 1 つは、R が作成するすべての png または pdf プロットに対して、次の警告が表示されることです。

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

ただし、/etc/passwd への読み取りアクセスが拒否されても、すべてが正常に機能しているようです。私がやりたいことには不要に思えるので、R にこれらのアクセス許可を与える予定はありません。ただし、繰り返される警告はやや面倒です。

R/src で "getpwuid" を簡単に grep すると、それが呼び出されている 3 つの場所が示されます。

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 ファイルにアクセスする必要があるのはなぜですか?
  • png または pdf デバイスへの書き込み時に (R を再コンパイルせずに) R が getpwuid_r() を呼び出さないようにする方法はありますか?
4

1 に答える 1

0

R 内部関数 file.info (gdb の do_fileinfo) は、ユーザー名を含むファイルに関する多くの情報を検出して返すようです。

基本的にはRにロードされたすべてのファイルに対してこれを行うと思いますが、パッケージのロード中だけかもしれません。

これを行うために getpwuid を使用します。

現在、R でパフォーマンスの問題が発生しています。これは、NIS 応答の待ち時間が長いためです。パッケージのロード中に同じユーザーを何度も検索しているため、あらゆる種類の問題が発生します。

キャッシュしてほしい。

于 2013-03-06T07:33:39.033 に答える