Как мне скомпилировать gcc-5 из исходников?

И Debian, и Ubuntu поставляют файл /etc/sudoers, содержащий Defaults env_reset, который сбрасывает переменные среды.

Однако поведение env_resetбыло изменено с без касания $HOMEна сброс в дом целевого пользователя.

В выпусках до 19.04 Ubuntu исправил свою версию sudo, чтобы сохранить предыдущее поведение (без изменений$HOME):https://bugs.launchpad.net/ubuntu/+source/sudo/+bug/760140

Это было отменено в версии 19.10, и, начиная с этого момента, Ubuntu делает то же, что и исходный sudoи все остальные дистрибутивы Linux, и изменяет $HOMEна поведение целевого пользователя. Подробнее см. в этом разделе вопросов и ответов на askubuntu.com:Как sudo обрабатывает $HOME по-другому с 19.10? . Для более ранних выпусков изменение не было выполнено, поэтому 18.04 LTS по-прежнему имеет специфическое поведение Ubuntu -.


Ниже приведен старый текст этого ответа, который относится к выпускам Ubuntu до 19.04, включая 18.04 LTS.

В Ubuntu, чтобы сбросить переменную среды $HOME для целевого пользователя, необходимо установить либо Defaults always_set_home, либо Defaults set_home(, и в этом случае только sudo -sбудет обновлять HOME )в их /etc/sudoers. ].

Эта ошибка в трекере Ubuntu имеет еще одно объяснение тому, что $HOME не задано в sudo :https://bugs.launchpad.net/ubuntu/+source/sudo/+bug/1373495

См. комментарий #4:

If HOME is removed, then e.g. vim, bash, etc., will use /root/.vimrc, /root/.bashrc, etc rather than the user's ~/.vimrc, ~/.bashrc, etc. While it's a bad idea to run X clients via sudo, they too would likely look in the wrong locations for configuration files, and there's a chance that X11 clients may not even be able to connect to the X11 server if they are aimed at the wrong.Xauthority file.

Это сознательное решение разработчиков Ubuntu.

Этот ответ содержит более подробную информацию о параметрах sudoers, таких какalways_set_home:https://unix.stackexchange.com/a/91572/281844


В вашем вопросе есть вторая проблема, а именно sudo echo $HOME, которая по-прежнему отображает дом пользователя даже в Debian.

Это происходит потому, что оболочка расширяется$HOMEдо выполнения команды sudo.

Так вот:

$ sudo echo $HOME

Сначала расширяется оболочкой в ​​:

$ sudo echo /home/user

Затем sudo выполняет echo /home/userот имени пользователя root...

Это также должно продемонстрировать разницу:

$ sudo bash -c 'echo $HOME'
/root

Или получить полную корневую оболочку и посмотреть там переменную окружения:

$ sudo -s
# echo $HOME
/root

1
10.02.2020, 00:27
1 ответ

Причина в том, что в glibc были внесены изменения, нарушившие совместимость со старыми компиляторами. Для этих компиляторов существует патч . Патч заменяет struct ucontextна ucontext_tв файлах libgcc/config/<arch>/linux-unwind.h, где <arch>— это i386, aarch64, alphaи т. д.

Существует аналогичный вопрос о stackoverflow .

В дополнение к этим исправлениям мне также нужно было применить исправления для кода санитайзеров из здесь(их было достаточно )и здесь .

После этого ССЗ был окончательно построен.

3
28.04.2021, 23:24

Теги

Похожие вопросы