[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