1 |
Hi!
|
2 |
|
3 |
On Thu, Jan 12, 2006 at 07:43:51PM +0300, Vladimir Solomatin wrote:
|
4 |
> т.е. после установки и запуска chpax из /etc/init.d/ |
5 |
> нужно будет пересобрать всю систему, для того чтобы не работающие в |
6 |
> hardened программы были скомпилированы gcc без патчей ssp и pie? |
7 |
|
8 |
Брр. Нет. Зачем пересобирать всю систему? Последовательность такая: когда вы
|
9 |
устанавливаете или обновляете одну из тех немногих программ, которые не
|
10 |
полностью поддерживают hardened, после компиляции этих программ вам нужно
|
11 |
запустить /etc/init.d/chpax, чтобы на бинарники этих программ проставились
|
12 |
нужные флаги. Если этого не сделать, то при запуске этих программ вы будете
|
13 |
получать SEGFAULT, а в логах ядра будет видно что их прибивает GrSec или PaX.
|
14 |
|
15 |
> запускаю startx |
16 |
> получаю: |
17 |
> |
18 |
> .... |
19 |
> Duplicate symbol __i686.get_pc_thunk.bx in |
20 |
> /usr/lib/modules/fonts/libbitmap.a:bitmapmod.o |
21 |
> Also defined in /usr/lib/modules/fonts/libbitmap.a |
22 |
|
23 |
О! Знакомая проблема. :-) Из-за этого бага мне приходится X-ы компилировать
|
24 |
gcc без hardened. Задобало уже. Правда, это единственная прога, которую
|
25 |
приходится компилировать gcc без hardened - всем остальным хватает запуска
|
26 |
/etc/init.d/chpax. Насколько я понимаю это даже не баг в X, а баг в
|
27 |
ati-drivers, которые я использую.
|
28 |
|
29 |
Делается это примерно так. Если у вас, например:
|
30 |
|
31 |
home ~ # gcc-config -l
|
32 |
[1] i686-pc-linux-gnu-3.4.4 *
|
33 |
[2] i686-pc-linux-gnu-3.4.4-hardenednopie
|
34 |
[3] i686-pc-linux-gnu-3.4.4-hardenednopiessp
|
35 |
[4] i686-pc-linux-gnu-3.4.4-hardenednossp
|
36 |
[5] i686-pc-linux-gnu-3.4.4-vanilla
|
37 |
|
38 |
то:
|
39 |
|
40 |
gcc-config 5
|
41 |
source /etc/profile
|
42 |
emerge xorg-x11
|
43 |
gcc-config 1
|
44 |
source /etc/profile
|
45 |
|
46 |
Для автоматизации этого процесса, я написал файлик /etc/portage/bashrc:
|
47 |
---cut---
|
48 |
if [ "${PN}" == "xorg-x11" ]; then
|
49 |
PATH=$PATH:/usr/local/bin:/bin:/usr/bin
|
50 |
if [ "${EBUILD_PHASE}" == "unpack" ]; then
|
51 |
sudo /usr/bin/gcc-config 5
|
52 |
source /etc/profile
|
53 |
fi
|
54 |
if [ "${EBUILD_PHASE}" == "postinst" ]; then
|
55 |
sudo /usr/bin/gcc-config 1
|
56 |
source /etc/profile
|
57 |
fi
|
58 |
fi
|
59 |
---cut---
|
60 |
|
61 |
Тогда даже если X-ы будут компилироваться в середине `emerge -uDNav world`,
|
62 |
то для их компиляции emerge переключится на gcc без hardened, а после их
|
63 |
компиляции - вернётся обратно.
|
64 |
|
65 |
Единственная проблема с моим скриптом - если у вас будет стоят одновременно
|
66 |
два gcc то параметры gcc-config 1 и 5 могут выбирать не тот gcc.
|
67 |
|
68 |
--
|
69 |
WBR, Alex.
|
70 |
--
|
71 |
gentoo-user-ru@g.o mailing list |