Неправильная работа perl скрипта в chroot

Discussion in 'Безопасность и Анонимность' started by Goudini, 16 Mar 2008.

  1. Goudini

    Goudini Elder - Старейшина

    Joined:
    7 Jun 2006
    Messages:
    132
    Likes Received:
    134
    Reputations:
    91
    Хочу запустить perl скрипт (веб сервер) в chroot окружении.
    Скопировал bash, perl, его модули и всё нужное для работаы в каталог /home/bunny. Но приложение отказывается работать правильно. Вот мои действия

    Code:
    $ sudo chroot /home/bunny
    bash-3.2# ls
    bin  dev  etc  lib  root  usr
    bash-3.2# cd root
    bash-3.2# ls
    index.html  server.pl  server.pl~
    bash-3.2# cat server.pl
    #!/usr/bin/perl
    use IO::Socket::INET;
    
    my $port = 8888;
    my $ident = 'server';
    
    my $serv = IO::Socket::INET->new(
      Proto     => 'tcp',
      LocalPort => $port,
      Listen    => SOMAXCONN,
      Reuse     => 1,
    ) or die "Can't start server: $!";
    
    print "[Server $0 accepting clients at http://localhot:$port/]\n";
    
    sub sendfile {
      my $client = shift;
      my $file = shift;
      open(FILE, $file);
      while (<FILE>) { print $client $_ };
      close FILE;
    }
    
    while (my $client = $serv->accept()) {
      $client->autoflush(1);
      
      my $request = <$client>;
      if ($request =~ m|^GET /(.*) HTTP/1.[01]|) {
        if ($1 eq 'index.html' or $1 eq '') { sendfile($client, 'index.html'); next }
        if (-e $1) {
          print $client "HTTP/1.0 200 OK\nServer: $ident\nContent-type: text/html\n\n";
          sendfile($client, $1);
        } else {
          print $client "HTTP/1.0 404 Not Found\nServer: $ident\n";
          print $client "Content-type: text/html\n\n";
          print $client "file $1 not found\n";
        }
      } else {
        print $client "HTTP/1.0 400 Bad Request\nServer: $ident\n";
        print $client "Conten-type: text/html\n\n";
        print $client "Bad request\n";
      }
      close $client;
    }bash-3.2# perl server.pl
    [COLOR=White][B]Can't start server: No such file or directory at server.pl line 7.[/B][/COLOR]
    bash-3.2# 
    
    Без chroot`a всё работает хорошо. Пробовал дописывать в начало скрипта
    Code:
    chroot('/home/bunny');
    но появляется всё та же ошибка

    Can't start server: No such file or directory at server.pl line 11.

    Почему Perl останавливается на этой строке?
    Code:
    my $serv = IO::Socket::INET->new(
     
  2. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    А если IO::Socket::INET->new скормить адрес хоста, к которому коннектиться надо? /etc/hosts в chroot'е имеется?
     
  3. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    727
    Reputations:
    266
    модули перла поставь.