Portál AbcLinuxu, 5. května 2025 09:14
Řešení dotazu:
Jedine, že by sa normal user nedostal ku všetkým knižniciam,ku ktorým sa dostane root. A takýto stav môže nastať, ako to najrýchlejšie zistím, či sa nejedná práve o toto?Pochybujem, existencia kniznic a externych funkcii volanych sa overuje. Zistis:
# ldd PATH_TO_FILE ldd /bin/bash ldd `which bash`PATH_TO_FILE moze byt nie len program, ale aj kniznica .o. Lahsie bude nainstalovat Linux alebo pouzi Windows Subsystem for Linux (zrejme Ti bude stacit bez problemov WLS 1).
strace -vf /path/to/binary
moze napovedat viac.
V dmesg by ti mal segfault zapisat -- zazdielaj nech vidime.
Pripadne sprav ulimit -c unlimited
a spusti to znova. Ked budes mat core file daj: gdb /path/to/binary /path/to/core
a potom v samotnom gdbbt
. Tieto vypisy zazdielaj.
Takto povedat tazko, moze to byt vela roznych veci.
strace -vf /home/rony/app/juke execve("/home/rony/app/juke", ["/home/rony/app/juke"], ["SHELL=/bin/bash", "SESSION_MANAGER=local/ares:@/tmp"..., "WINDOWID=50331655", "QT_ACCESSIBILITY=1", "COLORTERM=truecolor", "XDG_CONFIG_DIRS=/etc/xdg/xdg-pla"..., "XDG_SESSION_PATH=/org/freedeskto"..., "LANGUAGE=sk:en_US", "MANDATORY_PATH=/usr/share/gconf/"..., "LC_ADDRESS=sk_SK.UTF-8", "LC_NAME=sk_SK.UTF-8", "SSH_AUTH_SOCK=/tmp/ssh-RLdoOyVyX"..., "SHELL_SESSION_ID=c22f7b898e7b451"..., "DESKTOP_SESSION=plasma", "LC_MONETARY=sk_SK.UTF-8", "SSH_AGENT_PID=7260", "GTK_RC_FILES=/etc/gtk/gtkrc:/hom"..., "XCURSOR_SIZE=24", "XDG_SEAT=seat0", "PWD=/home/rony/app", "XDG_SESSION_DESKTOP=KDE", "LOGNAME=rony", "XDG_SESSION_TYPE=x11", "GPG_AGENT_INFO=/run/user/1000/gn"..., "XAUTHORITY=/home/rony/.Xauthorit"..., "GTK2_RC_FILES=/etc/gtk-2.0/gtkrc"..., "HOME=/home/rony", "SSH_ASKPASS=/usr/bin/ksshaskpass", "LC_PAPER=sk_SK.UTF-8", "LANG=sk_SK.UTF-8", "LS_COLORS=rs=0:di=01;34:ln=01;36"..., "XDG_CURRENT_DESKTOP=KDE", "KONSOLE_DBUS_SERVICE=:1.147", "KONSOLE_DBUS_SESSION=/Sessions/2", "PROFILEHOME=", "XDG_SEAT_PATH=/org/freedesktop/D"..., "KONSOLE_VERSION=200802", "KDE_SESSION_UID=1000", "LESSCLOSE=/usr/bin/lesspipe %s %"..., "XDG_SESSION_CLASS=user", "TERM=xterm-256color", "LC_IDENTIFICATION=sk_SK.UTF-8", "DEFAULTS_PATH=/usr/share/gconf/p"..., "LESSOPEN=| /usr/bin/lesspipe %s", "LIBVIRT_DEFAULT_URI=qemu:///syst"..., "USER=rony", "COLORFGBG=15;0", "KDE_SESSION_VERSION=5", "PAM_KWALLET5_LOGIN=/run/user/100"..., "DISPLAY=:0", "SHLVL=1", "LC_TELEPHONE=sk_SK.UTF-8", "LC_MEASUREMENT=sk_SK.UTF-8", "XDG_VTNR=1", "XDG_SESSION_ID=10", "XDG_RUNTIME_DIR=/run/user/1000", "LC_TIME=sk_SK.UTF-8", "QT_AUTO_SCREEN_SCALE_FACTOR=0", "XCURSOR_THEME=breeze_cursors", "XDG_DATA_DIRS=/usr/share/plasma:"..., "KDE_FULL_SESSION=true", "PATH=/usr/local/sbin:/usr/local/"..., "DBUS_SESSION_BUS_ADDRESS=unix:pa"..., "KDE_APPLICATIONS_AS_SCOPE=1", "LC_NUMERIC=sk_SK.UTF-8", "KONSOLE_DBUS_WINDOW=/Windows/1", "OLDPWD=/home/rony/lazarus-projek"..., "_=/usr/bin/strace"]) = -1 EPERM (Operácia nie je povolená) +++ killed by SIGSEGV +++ Chyba segmentácie
For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from ./juke... (gdb) run Starting program: /home/rony/app/juke During startup program terminated with signal SIGSEGV, Segmentation fault. (gdb) bt No stack. (gdb)
For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from ./juke... (gdb) catch throw Catchpoint 1 (throw) (gdb) run Starting program: /home/rony/app/juke During startup program terminated with signal SIGSEGV, Segmentation fault. (gdb) bt No stack. (gdb)GDB som použil tiež ako user, ako root sa to rozbehne aj v debuggeri. Aj aplikácia ako root beží. Skúsil som "Hello word" skompilovaný cross kompilátorom u kolegu - ako root ide, ako user nie. Rovnako ako tá appka. Skompiloval som to na linuxe ide OK pod oboma kontami. Už sme našli, že programátor používal nižšiu verziu freepascalu a cross kompilátora. Takže ide appku skompilovať s novým. Bez ohľadu na to, že pôvodná kompilácia bola starším kompilátorom, je otázka prečo to ako root ide a ako user nie. Problém sme vyriešili, ale nie sme veľmi múdrejší. Ako sa dá k tomuto dôjsť inak ako metódou pokus - omyl. Z vyskúšaného, resp. z otestovaného nevieme dospieť k tomu, že problém je nižšiu verziou pascalu prípadne jeho cross kompilátorom resp. nejakou chybou v nich. Ďakujem za pomoc.
/var/lib/systemd/coredump
.
Ten dmesg (resp. /var/log/messages
) tiez zaloguje crash. To iste by vlastne na zaciatku ukazalo aj gdb.
Ak by som si mal tipnut tak akokeby aplikacia neosetruje, ze nieco moze vratit permission denied a neicializovany premmenu pouziva dalej. Ale to je len tip.
rony@ares:~/app$ date St 24. marec 2021, 20:00:13 CET rony@ares:~/app$ find /home/rony/app/ -perm -4000 -print rony@ares:~/app$ ./juke Chyba segmentácie rony@ares:~/app$ dmesg | tail -n 20 dmesg: read kernel buffer failed: Operácia nie je povolená rony@ares:~/app$ sudo dmesg | tail -n 20 [sudo] heslo pre používateľa rony: [ 91.416889] wlp4s0: send auth to f4:92:bf:77:05:fa (try 1/3) [ 91.418155] wlp4s0: authenticated [ 91.418844] wlp4s0: associate with f4:92:bf:77:05:fa (try 1/3) [ 91.426568] wlp4s0: RX AssocResp from f4:92:bf:77:05:fa (capab=0x11 status=0 aid=3) [ 91.429181] wlp4s0: associated [ 91.554014] IPv6: ADDRCONF(NETDEV_CHANGE): wlp4s0: link becomes ready [ 102.184578] Lockdown: systemd-logind: hibernation is restricted; see man kernel_lockdown.7 [ 102.227910] Lockdown: systemd-logind: hibernation is restricted; see man kernel_lockdown.7 [ 102.228870] Lockdown: systemd-logind: hibernation is restricted; see man kernel_lockdown.7 [ 102.316419] Bluetooth: RFCOMM TTY layer initialized [ 102.316427] Bluetooth: RFCOMM socket layer initialized [ 102.316433] Bluetooth: RFCOMM ver 1.11 [ 145.170893] Lockdown: systemd-logind: hibernation is restricted; see man kernel_lockdown.7 [ 145.176705] Lockdown: systemd-logind: hibernation is restricted; see man kernel_lockdown.7 [ 145.177285] Lockdown: systemd-logind: hibernation is restricted; see man kernel_lockdown.7 [ 145.177858] Lockdown: systemd-logind: hibernation is restricted; see man kernel_lockdown.7 [ 145.177884] Lockdown: systemd-logind: hibernation is restricted; see man kernel_lockdown.7 [ 153.748940] Lockdown: systemd-logind: hibernation is restricted; see man kernel_lockdown.7 [ 153.752558] Lockdown: systemd-logind: hibernation is restricted; see man kernel_lockdown.7 [ 153.752927] Lockdown: systemd-logind: hibernation is restricted; see man kernel_lockdown.7 rony@ares:~/app$ coredumpctl TIME PID UID GID SIG COREFILE EXE Wed 2021-03-24 16:37:45 CET 7673 1000 1000 11 present /home/rony/.ditec/dlauncher-bin/dLauncher rony@ares:~/app$ ulimit unlimited rony@ares:~/app$
echo 0 > /proc/sys/vm/mmap_min_addr
coredumpctl info
?
readelf -h /path/to/juke
a ldd /path/to/juke
?
Pozeram spatne na ten strace, ti ho ani nedovoli urobit. Posli pls strace aj pod rootom.
Zaujimave je preco nemas coredump ak mas ulimit -c nastaveny na unlimited. Este je mozne ze ak je to C++ tak to chytil exception handler a ten coredump nevygeneroval (opat tipujem).
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.