Forum Linux.debian/ubuntu "localhost" inconnu dans un chroot

Posté par  .
Étiquettes :
0
11
nov.
2006
Bonsoir à tous,

Je suis sous Debian Sarge et j'utilise un Apache 2.0 chrooté. Lorsque j'exécute des scripts (php, perl, shell, ...) contenant le mot "localhost", la résolution ne se fait pas, et ils plantent. Que dois-je mettre dans mon chroot dir pour que localhost soit reconnu ? Merci pour votre aide,
  • # /etc/hosts

    Posté par  . Évalué à 2.

    Cree un fichier etc/hosts dans le chroot et ajoute-y "127.0.0.1 localhost".

    Je pense que cela devrait resoudre les problemes.
    • [^] # Re: /etc/hosts

      Posté par  . Évalué à 1.

      Malheureusement j'ai déjà fait cette opération et ça ne marche pas mieux :(
      • [^] # Re: /etc/hosts

        Posté par  . Évalué à 1.

        dans /etc/network/interface:
        auto lo
        iface lo inet loopback


        puis /etc/init.d/network restart
        • [^] # Re: /etc/hosts

          Posté par  . Évalué à 1.

          j'ai déjà mis le fichier /etc/network/interface dans mon chroot dir, par contre je n'ai pas copié et exécuté /etc/init.d/networking. Je présume que je dois l'exécuter dans mon chroot, ce qui implique que je dois également copier toutes les commandes (et les lib associées) qui sont appelées dans /etc/init.d/networking (je n'ai pas de /etc/init.d/network). Je teste.

          Merci pour la suggestion.
      • [^] # Re: /etc/hosts

        Posté par  . Évalué à 1.

        Verifie que tu as bien une interface lo avec /sbin/ifconfig.
        Sinon # /sbin/ifconfig lo 127.0.0.1 devrait regler le probleme.

        Peut-etre aussi que apache2 ou certains modules ont besoins de /proc.
        tu peux le monter dans le chroot avec
        # mout -t proc none chroot_path/proc

        Au pire tu peux essaye de refaire le chroot completement. Cela arrive qu'on oublie une etape.

        Quand tu auras reussi a faire fonctionner le chroot, verifier avec ps (/proc doit etre monte) que tu n'a acces a aucun processus appartenant a www-data (l'uid d'apache) en dehors du chroot, sinon ton chroot ne sert a rien.

        Tu peux aussi etudier les possibiltes offertes par grsecurity[1] qui sont assez interessantes.

        [1] http://www.grsecurity.org/
    • [^] # Re: /etc/hosts

      Posté par  . Évalué à 1.

      Malheureusement j'ai déjà fait cette opération et ça ne marche pas mieux :(
      • [^] # Re: /etc/hosts

        Posté par  . Évalué à 1.

        Tu as un fichier /etc/nsswitch.conf ?

        Sinon, la bonne approche pour résoudre ce genre de problème, c'est d'utiliser strace, et de repérer les fichiers manquants ...


        strace ping localhost


        par exemple.
        • [^] # Re: /etc/hosts

          Posté par  . Évalué à 1.

          Oui j'ai bien un fichier /etc/nsswitch.conf dans mon chroot :

          # more nsswitch.conf


          # /etc/nsswitch.conf
          #
          # Example configuration of GNU Name Service Switch functionality.
          # If you have the `glibc-doc' and `info' packages installed, try:
          # `info libc "Name Service Switch"' for information about this file.

          passwd: compat
          group: compat
          shadow: compat

          hosts: files dns
          networks: files

          protocols: db files
          services: db files
          ethers: db files
          rpc: db files

          netgroup: nis
        • [^] # Re: /etc/hosts

          Posté par  . Évalué à 1.

          Oui j'ai bien un fichier /etc/nsswitch.conf dans mon chroot :

          # more nsswitch.conf


          # /etc/nsswitch.conf
          #
          # Example configuration of GNU Name Service Switch functionality.
          # If you have the `glibc-doc' and `info' packages installed, try:
          # `info libc "Name Service Switch"' for information about this file.

          passwd: compat
          group: compat
          shadow: compat

          hosts: files dns
          networks: files

          protocols: db files
          services: db files
          ethers: db files
          rpc: db files

          netgroup: nis
        • [^] # Re: /etc/hosts

          Posté par  . Évalué à 2.

          Merci pour la suggestion d'utiliser strace, dans mon chroot :

          strace ping localhost
          ...
          access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
          open("/lib/tls/libnss_dns.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
          open("/lib/tls/libnss_dns.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
          open("/lib/libnss_dns.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
          open("/usr/lib/i686/cmov/libnss_dns.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
          open("/usr/lib/i686/libnss_dns.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
          open("/usr/lib/libnss_dns.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
          ...

          On constate que /lib/tls/libnss_dns.so.2 est manquante dans le chroot :

          cp /lib/tls/libnss_dns.so.2 /var/www/lib/tls/libnss_dns.so.2

          Le résolution de noms peut alors se faire et le localhost est reconnu.

          Encore merci.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.