Dependecy in a jailed ssh user

Discussion in 'Installation/Configuration' started by SergiX44, Jun 2, 2016.

  1. SergiX44

    SergiX44 Member

    I'm trying to running steamcmd in a jailed user, but it require some dependecy (lib32gcc1) and i copied it to the jailed user.

    It still gave me this error:
    Code:
    /home/default_utit/steamcmd/linux32/steamcmd: error while loading shared libraries: librt.so.1: cannot open shared object file: No such file or directory
    
    How can i fix that?
     
  2. Jesse Norell

    Jesse Norell Well-Known Member Staff Member Howtoforge Staff

    Copy librt.so.1 to your jailed environment. (note it's probably a symlink to the actual .so file, so depending on how you copy it, make sure you don't just end up with a broken symlink)
     
  3. SergiX44

    SergiX44 Member

    Yeah i searched for it but i don't know where find those libraries
     
  4. Jesse Norell

    Jesse Norell Well-Known Member Staff Member Howtoforge Staff

    Don't know what OS you have offhand, but in Debian:
    Code:
    root@host-1:~# cat /etc/issue
    Debian GNU/Linux 8 \n \l
    root@host-1:~# locate librt.so.1
    /lib/x86_64-linux-gnu/librt.so.1
    root@host-1:~# ls -l /lib/x86_64-linux-gnu/librt.so.1
    lrwxrwxrwx 1 root root 13 Feb 29 10:29 /lib/x86_64-linux-gnu/librt.so.1 -> librt-2.19.so
    root@host-1:~# dpkg -S /lib/x86_64-linux-gnu/librt.so.1
    libc6:amd64: /lib/x86_64-linux-gnu/librt.so.1
    
     
  5. SergiX44

    SergiX44 Member

    the os is debian jessie, for me the locate command don't say anything, but the same program runned out of the jail works well
     
  6. Jesse Norell

    Jesse Norell Well-Known Member Staff Member Howtoforge Staff

    Try 'ldd /home/default_utit/steamcmd/linux32/steamcmd' or even just 'find / -name librt.so.1'. (ldd will tell you the locations of all shared libraries used by a compiled binary, so assuming steamcmd is not a script or similar, that might be just what you need)
     
  7. SergiX44

    SergiX44 Member

    i mean that the locate command runned out of the jail don't say anything
    this is the result of "ldd /home/default_utit/steamcmd/linux32/steamcmd" runned on the program inside the jail:
    Code:
    [email protected]:~$ ldd /home/default_utit/steamcmd/linux32/steamcmd
            linux-gate.so.1 (0xf77d0000)
            librt.so.1 => not found
            libm.so.6 => not found
            libdl.so.2 => not found
            libstdc++.so.6 => not found
            libpthread.so.0 => not found
            libc.so.6 => /lib/i386-linux-gnu/i686/cmov/libc.so.6 (0xf761e000)
            /lib/ld-linux.so.2 (0xf77d3000)
    
     
  8. SergiX44

    SergiX44 Member

    And this the find out of the jail:
    Code:
    root@srv1:~# find / -name librt.so.1
    /lib/x86_64-linux-gnu/librt.so.1
    /lib/i386-linux-gnu/librt.so.1
    /lib/i386-linux-gnu/i686/cmov/librt.so.1
    /lib32/librt.so.1
    /var/www/clients/client0/web33/lib/x86_64-linux-gnu/librt.so.1
    root@srv1:~#
     
  9. Jesse Norell

    Jesse Norell Well-Known Member Staff Member Howtoforge Staff

    Right, it will only show you the location of files in the locate database, and the file in question is not present. (I'm surprised you even have the locate command at all inside your jail, it's surely not needed there.)

    Run ldd outside the jail, it will tell you the location of the libraries that need copied into the jail (librt.so.1, libm.so.6, libdl.so.2, libstdc++.so.6, libpthread.so.0).

    If you're installing packages into the jail, rather than just copying files, dpkg -S will tell you which packages you need, eg.:
    Code:
    root@host-1:~# dpkg -S libpthread.so.0
    libc6:amd64: /lib/x86_64-linux-gnu/libpthread.so.0
    
     

Share This Page