Рейтинг:0

Различный вывод для ldd между sudo и root

флаг cn
pfo

в моей системе вывод для ldd /usr/bin/openssl различия между обычным пользователем, root и sudo.

Это вывод для обычного пользователя:

$ кто
Мое имя
$ ldd /usr/bin/openssl
    Linux-vdso.so.1 (0x00007fff5bdd0000)
    libssl.so.1.1 => /usr/lib/x86_64-linux-gnu/libssl.so.1.1 (0x00007f609a783000)
    libcrypto.so.1.1 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 (0x00007f609a4a8000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f609a271000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f609a8db000)

Это вывод для обычного пользователя sudo-ing в root:

$ судо кто
корень
$ sudo ldd /usr/bin/openssl
    Linux-vdso.so.1 (0x00007ffc5d75a000)
    libssl.so.1.1 => /lib/x86_64-linux-gnu/libssl.so.1.1 (0x00007f4092062000)
    libcrypto.so.1.1 => /lib/x86_64-linux-gnu/libcrypto.so.1.1 (0x00007f4091ba6000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f409197e000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f4091979000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f4091974000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f40923bc000)

Это вывод для root:

$ судо су
$ кто
корень
$ ldd /usr/bin/openssl
    Linux-vdso.so.1 (0x00007ffcccffe000)
    libssl.so.1.1 => /usr/lib/x86_64-linux-gnu/libssl.so.1.1 (0x00007f4915593000)
    libcrypto.so.1.1 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 (0x00007f49152b8000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f4915081000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f49156eb000)

Это вывод для обычного пользователя sudo-ing в привязать9 пользователь:

$ sudo -u привязать whoami
связывать
$ sudo -u привязать ldd /usr/bin/openssl
    Linux-vdso.so.1 (0x00007ffdcabb2000)
    libssl.so.1.1 => /lib/x86_64-linux-gnu/libssl.so.1.1 (0x00007f53973d4000)
    libcrypto.so.1.1 => /lib/x86_64-linux-gnu/libcrypto.so.1.1 (0x00007f5396f18000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5396cf0000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f5396ceb000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f5396ce6000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f539772e000)

Я бы хотел, чтобы sudo давал тот же результат, что и обычный пользователь и root. Как я могу это сделать?

LD_LIBRARY_PATH не идентичен среди сред, но я не знаю, как сделать значения одинаковыми.

$ эхо $LD_LIBRARY_PATH
/usr/lib/x86_64-linux-gnu
$
$ sudo bash -c 'эхо $LD_LIBRARY_PATH'

$
$ судо су
$ эхо $LD_LIBRARY_PATH
/usr/lib/x86_64-linux-gnu
$
$ sudo -u bind bash -c 'echo $LD_LIBRARY_PATH'

$

Я верю, что ответ на этот вопрос решит этот вопрос, связанный с привязкой.

waltinator avatar
флаг it
Прочтите `man ldconfig`. Переменная среды `LD_LIBRARY_PATH`, вероятно, различается в разных средах.
pfo avatar
флаг cn
pfo
@waltinator: Спасибо за ваш комментарий. `LD_LIBRARY_PATH` на самом деле одинакова среди сред, я добавил вывод к вопросу.
Tilman avatar
флаг cn
Команда sudo echo $LD_LIBRARY_PATH делает не то, что вы думаете.На самом деле он выводит значение LD_LIBRARY_PATH *вне sudo, потому что оболочка выполняет подстановку переменных перед выполнением команды sudo. Попробуйте что-то вроде `sudo bash -c 'echo $LD_LIBRARY_PATH'`.
waltinator avatar
флаг it
Вы не проверяли `$LD_LIBRARY_PATH` в разных средах. Каждый раз, когда вы вводили «$LD_LIBRARY_PATH» (за исключением случая «sudo su»), он заполнялся из вашей текущей среды перед выполнением команды. Посмотрите, как это происходит, поместив `echo` перед каждым из ваших 1-строков. `bash` оценивает переменные среды заранее. Избегайте `$`, поставив перед ним обратную косую черту ("\ `"), чтобы отложить оценку, например. `sudo эхо \$LD_LIBRARY_PATH`.
pfo avatar
флаг cn
pfo
Спасибо вам обоим! Вы были правы, ценности действительно были другими. sudo bash -c 'echo $LD_LIBRARY_PATH' возвращает пустую строку. Мой следующий вопрос, как я могу это исправить. Я попробовал `sudo bash -c 'export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu'`, но, конечно, значение не сохраняется, а `sudo bash -c 'echo $LD_LIBRARY_PATH'` снова возвращает пустую строку.
Tilman avatar
флаг cn
Вы можете попробовать поместить команду `export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu` в файл `.bashrc` пользователя `bind`, но я сомневаюсь, что этот путь приведет вас в правильном направлении. Похоже, у вас установлены две разные версии `libssl.so.1.1`: одна в `/lib/x86_64-linux-gnu`, а другая в `/usr/lib/x86_64-linux-gnu`. Это обязательно вызовет проблемы. Вместо этого попробуйте исправить это. Узнай, какой из них правильный, и потеряй лишний.
pfo avatar
флаг cn
pfo
@Tilman Спасибо! Могу ли я просто запустить `rm /lib/x86_64-linux-gnu/libssl.so.1.1` или есть более безопасный способ сделать это? Я боюсь оказаться в (другом) непоследовательном состоянии.
Tilman avatar
флаг cn
Самым безопасным способом будет выяснить, откуда взялась лишняя версия, и в зависимости от результата решить, нужна ли она еще. Например, если он был установлен как часть пакета стороннего программного обеспечения, вы можете сохранить резервную копию, пока не убедитесь, что пакет также работает с версией в `/usr/lib/x86_64-linux-gnu`.
Рейтинг:0
флаг cn
pfo

Оказывается, проблема заключалась в том, что у меня были установлены две разные версии определенных библиотек, из-за чего OpenSSL вел себя по-разному в зависимости от того, использовал ли пользователь sudo или нет.

Удаление этих библиотек и запуск ldconfig после этого решил проблему для меня:

sudo rm /lib/x86_64-linux-gnu/libssl.so.1.1
sudo rm /lib/x86_64-linux-gnu/libcrypto.so.1.1
судо ldconfig

Спасибо @waltinator и @Tilman за комментарии.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.