How to run programs with ld-linux.so?

1,537

Try using full path for ls:

[ctor@dom0 tst]$ /lib64/ld-linux-x86-64.so.2 /usr/bin/ls
afile

[ctor@dom0 tst]$ /lib64/ld-linux-x86-64.so.2 ls
ls: error while loading shared libraries: ls: cannot open shared object file

[ctor@dom0 tst]$ /lib64/ld-linux-x86-64.so.2 anyinexistentcommandhere
anyinexistentcommandhere: error while loading shared libraries: anyinexistentcommandhere: cannot open shared object file

[ctor@dom0 tst]$ ldd ls
ldd: ./ls: No such file or directory

[ctor@dom0 tst]$ ldd `type -P ls`
    linux-vdso.so.1 (0x00007fffd636c000)
    libselinux.so.1 => /lib64/libselinux.so.1 (0x000074b858cc3000)
    libcap.so.2 => /lib64/libcap.so.2 (0x000074b858abe000)
    libc.so.6 => /lib64/libc.so.6 (0x000074b8586f8000)
    libpcre.so.1 => /lib64/libpcre.so.1 (0x000074b858486000)
    libdl.so.2 => /lib64/libdl.so.2 (0x000074b858282000)
    /lib64/ld-linux-x86-64.so.2 (0x000074b85910a000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x000074b858064000)

[ctor@dom0 tst]$ LD_DEBUG=libs /lib64/ld-linux-x86-64.so.2 ls
      6380: find library=ls [0]; searching
      6380:  search cache=/etc/ld.so.cache
      6380: 
ls: error while loading shared libraries: ls: cannot open shared object file

[ctor@dom0 tst]$ LD_DEBUG=libs /lib64/ld-linux-x86-64.so.2 inexistentcommand
      6415: find library=inexistentcommand [0]; searching
      6415:  search cache=/etc/ld.so.cache
      6415: 
inexistentcommand: error while loading shared libraries: inexistentcommand: cannot open shared object file

[ctor@dom0 tst]$ LD_DEBUG=libs /lib64/ld-linux-x86-64.so.2 /usr/bin/ls
      6342: find library=libselinux.so.1 [0]; searching
      6342:  search cache=/etc/ld.so.cache
      6342:   trying file=/lib64/libselinux.so.1
      6342: 
      6342: find library=libcap.so.2 [0]; searching
      6342:  search cache=/etc/ld.so.cache
      6342:   trying file=/lib64/libcap.so.2
      6342: 
      6342: find library=libc.so.6 [0]; searching
      6342:  search cache=/etc/ld.so.cache
      6342:   trying file=/lib64/libc.so.6
      6342: 
      6342: find library=libpcre.so.1 [0]; searching
      6342:  search cache=/etc/ld.so.cache
      6342:   trying file=/lib64/libpcre.so.1
      6342: 
      6342: find library=libdl.so.2 [0]; searching
      6342:  search cache=/etc/ld.so.cache
      6342:   trying file=/lib64/libdl.so.2
      6342: 
      6342: find library=libpthread.so.0 [0]; searching
      6342:  search cache=/etc/ld.so.cache
      6342:   trying file=/lib64/libpthread.so.0
      6342: 
      6342: 
      6342: calling init: /lib64/libpthread.so.0
      6342: 
      6342: 
      6342: calling init: /lib64/libc.so.6
      6342: 
      6342: 
      6342: calling init: /lib64/libdl.so.2
      6342: 
      6342: 
      6342: calling init: /lib64/libpcre.so.1
      6342: 
      6342: 
      6342: calling init: /lib64/libcap.so.2
      6342: 
      6342: 
      6342: calling init: /lib64/libselinux.so.1
      6342: 
      6342: 
      6342: initialize program: /usr/bin/ls
      6342: 
      6342: 
      6342: transferring control: /usr/bin/ls
      6342: 
afile
Share:
1,537
TheFootClan
Author by

TheFootClan

Updated on September 18, 2022

Comments

  • TheFootClan
    TheFootClan over 1 year

    Is there a difference in the concept? I've seen separate code for both but have been unable to find any answers online regarding the differences between the two.

  • TheFootClan
    TheFootClan over 6 years
    The SAMLServiceProviderSAMLServiceProvider in from the ComponentSpace.SAML2 dll has two separate functions: ReceiveSLO and ReceiveSSO. This leads me to beleive there are some kind of differences. I'm going to read more into this.
  • ComponentSpace
    ComponentSpace over 6 years
    ReceiveSSO supports SAML sign-on (ie SSO). ReceiveSLO supports SAML logout (ie SLO aka sign-out).
  • Stephen Kitt
    Stephen Kitt over 5 years
    That’s exactly it, you need to specify the path if the binary isn’t in the current directory. Note that /usr/bin/ls will only work on distros which have merged / and /usr; /bin/ls should work everywhere.