Puncte:0

Ieșire diferită pentru ldd între sudo și root

drapel cn
pfo

pe sistemul meu, ieșirea pentru ldd /usr/bin/openssl diferă între utilizatorul obișnuit, root și sudo.

Aceasta este rezultatul pentru utilizatorul obișnuit:

$ whoami
numele meu
$ 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)

Aceasta este rezultatul pentru utilizatorul obișnuit sudo-ing în root:

$ sudo whoami
rădăcină
$ 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)

Aceasta este rezultatul pentru root:

$ sudo su
$ whoami
rădăcină
$ 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)

Aceasta este ieșirea pentru utilizatorul obișnuit sudo-ing în bind9 utilizator:

$ sudo -u bind whoami
lega
$ sudo -u bind 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)

Aș dori ca sudo să dea același rezultat pe care îl au deja utilizatorul obișnuit și root. Cum pot face acest lucru?

LD_LIBRARY_PATH nu este identic între medii, dar nu știu să fac valorile identice.

$ echo $LD_LIBRARY_PATH
/usr/lib/x86_64-linux-gnu
$
$ sudo bash -c 'echo $LD_LIBRARY_PATH'

$
$ sudo su
$ echo $LD_LIBRARY_PATH
/usr/lib/x86_64-linux-gnu
$
$ sudo -u bind bash -c 'echo $LD_LIBRARY_PATH'

$

Cred că răspunsul la asta se va rezolva această întrebare legată de legături.

waltinator avatar
drapel it
Citiți `man ldconfig`. Variabila de mediu `LD_LIBRARY_PATH` diferă probabil între diferitele medii.
pfo avatar
drapel cn
pfo
@waltinator: Mulțumesc pentru comentariu. `LD_LIBRARY_PATH` este de fapt identic printre medii, am adăugat rezultatul la întrebare.
Tilman avatar
drapel cn
Comanda `sudo echo $LD_LIBRARY_PATH` nu face ceea ce crezi tu.De fapt, scoate valoarea `LD_LIBRARY_PATH` *outside* `sudo` deoarece shell-ul efectuează înlocuirea variabilei înainte de a rula comanda `sudo`. Încercați ceva de genul `sudo bash -c 'echo $LD_LIBRARY_PATH'`.
waltinator avatar
drapel it
Nu ați verificat `$LD_LIBRARY_PATH` în diferite medii. De fiecare dată când ați tastat „`$LD_LIBRARY_PATH`” (cu excepția cazului `sudo su`), acesta a fost completat din mediul dumneavoastră curent, înainte de executarea comenzii. Vedeți cum se întâmplă punând „echo” înaintea fiecăreia dintre liniile dvs. 1. `bash` evaluează devreme variabilele de mediu. Scăpați de `$` punând o bară oblică inversă ("`\ `") înaintea acestuia pentru a întârzia evaluarea, de ex. `sudo echo \$LD_LIBRARY_PATH`.
pfo avatar
drapel cn
pfo
Va multumesc amandoi! Ai avut dreptate, valorile erau într-adevăr diferite. `sudo bash -c 'echo $LD_LIBRARY_PATH'` produce o linie goală. Următoarea mea întrebare este cum pot rezolva asta. Am încercat `sudo bash -c 'export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu'`, dar, desigur, valoarea nu este stocată și `sudo bash -c 'echo $LD_LIBRARY_PATH'` produce din nou o linie goală.
Tilman avatar
drapel cn
Ați putea încerca să puneți comanda `export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu` în fișierul `.bashrc` al utilizatorului `bind`, dar mă îndoiesc că această cale vă va conduce în direcția corectă. Se pare că aveți două versiuni diferite de `libssl.so.1.1` instalate, una în `/lib/x86_64-linux-gnu` și una în `/usr/lib/x86_64-linux-gnu`. Asta trebuie să provoace probleme. Încercați să remediați asta. Aflați care este cel potrivit și pierdeți-l pe cel suplimentar.
pfo avatar
drapel cn
pfo
@Tilman Mulțumesc! Pot doar să rulez `rm /lib/x86_64-linux-gnu/libssl.so.1.1` sau există o modalitate „mai sigură” de a face acest lucru? Mi-e teamă să nu ajung într-o (altă) stare inconsistentă.
Tilman avatar
drapel cn
Cea mai sigură modalitate ar fi să aflați de unde provine versiunea suplimentară și, în funcție de rezultat, decideți dacă este încă necesară. De exemplu, dacă a fost instalat ca parte a unui pachet software terță parte, poate doriți să păstrați o copie de rezervă până când ați verificat că pachetul funcționează și cu versiunea din `/usr/lib/x86_64-linux-gnu`.
Puncte:0
drapel cn
pfo

Se pare că problema era că aveam instalate două versiuni diferite ale anumitor biblioteci, ceea ce a făcut ca OpenSSL să se comporte diferit în funcție de dacă utilizatorul folosea sudo sau nu.

Eliminarea acelor biblioteci și rularea ldconfig apoi a rezolvat problema pentru mine:

sudo rm /lib/x86_64-linux-gnu/libssl.so.1.1
sudo rm /lib/x86_64-linux-gnu/libcrypto.so.1.1
sudo ldconfig

Mulțumim lui @waltinator și @Tilman pentru comentariile lor.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.