13

rwxps ビットの意味を理解しています。r-xp は .text 用です。rw-p は .data/.bss/heap/stack 用です。---pページだけの使用は何ですか?

たとえば、次の出力を参照してくださいcat /proc/self/maps

00400000-0040b000 r-xp 00000000 08:03 827490 /ビン/猫
0060b000-0060c000 rw-p 0000b000 08:03 827490 /ビン/猫
0060c000-0062d000 rw-p 00000000 00:00 0 [ヒープ]
3819a00000-3819a1e000 r-xp 00000000 08:03 532487 /lib64 ld-2.11.2.so
3819c1d000-3819c1e000 r--p 0001d000 08:03 532487 /lib64/ld-2.11.2.so
3819c1e000-3819c1f000 rw-p 0001e000 08:03 532487 /lib64/ld-2.11.2.so
3819c1f000-3819c20000 rw-p 00000000 00:00 0
3819e00000-3819f70000 r-xp 00000000 08:03 532490 /lib64/libc-2.11.2.so
3819f70000-381a16f000 ---p 00170000 08:03 532490 /lib64/libc-2.11.2.so
381a16f000-381a173000 r--p 0016f000 08:03 532490 /lib64/libc-2.11.2.so
381a173000-381a174000 rw-p 00173000 08:03 532490 /lib64/libc-2.11.2.so
381a174000-381a179000 rw-p 00000000 00:00 0
7fb859c49000-7fb85fa7a000 r--p 00000000 08:03 192261 /usr/lib/locale/locale-archive
7fb85fa7a000-7fb85fa7d000 rw-p 00000000 00:00 0
7fb85fa95000-7fb85fa96000 rw-p 00000000 00:00 0
7fff64894000-7fff648a9000 rw-p 00000000 00:00 0 [スタック]
7fff649ff000-7fff64a00000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
4

2 に答える 2

3

man pageによると、これは private (copy on write) を意味します。ただし、そのようなマッピングで何かを読み取り/書き込み/実行することができなければ、そのようなマッピングの有用性はわかりません。

おそらくそれは libc に対してプライベートであり、ユーザー プログラムが誤ってそれを台無しにすることなくアクセス許可を変更できるようになっています。

于 2010-10-06T14:51:42.180 に答える