[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:18546] Re: gnome-same-gnome とかの日本語表示



  永井@シリウスです。さんざん悩んだ挙げ句手詰まってしまったの
で聞いてしまいます。

  私も libc のソースを眺めてみました。たぶん今回の件は、

  「SUID/GUIDのプログラムがシステムデフォルトおよびシステム管
理者が /etc/ld.so.conf で許容している場所以外に格納してある共
有ライブラリをリンクすることはセキュアでない」

とする考えに起因しているんですよね。そうした場合、

>>>>>> Fumitoshi UKAI <ukai@debian.or.jp> wrote:

ukai> > gconv-modulesのBTSとして出すのがいいのかな?
ukai> 
ukai>  setgid されていると gconv-modules できないことがある
ukai>  * /usr/lib/gconv を /etc/ld.so.conf に追加

  この方法はわかるんですが、

ukai>  * glibc/iconvdata/Makefile で libJIS.so とかにも -rrpath,'$$ORIGIN'
ukai>   が必要なのではないか?

  こっちの方法は、glibc の elf/dl-load.c ソースの中にある

  /* $ORIGIN is not expanded for SUID/GUID programs.  */

というくだりには引っかからないものでしょうか?実は私は、rpath 
とrrpathの違いがよくわかってないのでひょっとしたら的外れかもし
れませんが、ChangeLog.9には、

1998-12-31  Ulrich Drepper  <drepper@xxxxxxxxxx>

        * iconvdata/Makefile: Use rpath $ORIGIN for modules which use any of
        the conversion libraries.

とあり、iconvdata/Makefile には、

LDFLAGS-EUC-JP.so = -Wl,-rpath,'$$ORIGIN'
$(objpfx)EUC-JP.so: $(objpfx)libJIS.so

とあるようです。
  しかしセキュアさを保つという意味では rpath の指定が無視され
るのは正しいように思えます。実際 glibc 内部では、実効UID != 実
UID もしくは 実効GID != 実GID のどちらかが成立する場合は内部変
数 __libc_enable_secure によってその動きを変え、結果ライブラリ
のロードパターンを変化させているようにみえます。
  rrpath というのはこの仕組みを迂回して、プログラムが指定した
位置にあるライブラリをロードできてしまうものなのでしょうか?

# はじめて ld のマニュアルをみたんですが、-rrpath という引数に
# 関する記述がないので、私自身よくわかっていません。(^^; でも
# 引数としては認識するし・・・これって -r と -rpath の両指定の
# 意味ですか?

---
Toyohiko Nagai <nagai@xxxxxxxxxxxx>
http://www.sirius.gr.jp/~nagai/
PGP Key fingerprint : F2 40 A5 42 F6 49 65 FF  09 B0 B3 77 5F 2A F6 F7