Pagina 1 di 1

Apache chroot [risolto]

Inviato: ven 30 nov 2007, 11:44
da Dani
Sto cercando di sistemare apache in una jail seguendo i vari howto che si trovano per la rete...
Ma non vuole avviarsi:

Codice: Seleziona tutto

root[apache]# strace -o log chroot /home/chroot/apache/ /usr/sbin/apachectl -k start
chroot: cannot run command `/usr/sbin/apachectl': No such file or directory
L'output di strace:

Codice: Seleziona tutto

execve("/bin/chroot", ["chroot", "/home/chroot/apache/", "/usr/sbin/apachectl", "-k", "start"], [/* 45 vars */]) = 0
brk(0)                                  = 0x804c000
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f0a000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=115631, ...}) = 0
mmap2(NULL, 115631, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7eed000
close(3)                                = 0
open("/lib/libc.so.6", O_RDONLY)        = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@_\1\000"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1528742, ...}) = 0
mmap2(NULL, 1316260, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7dab000
mmap2(0xb7ee7000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13c) = 0xb7ee7000
mmap2(0xb7eea000, 9636, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7eea000
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7daa000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7daa6c0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
mprotect(0xb7ee7000, 4096, PROT_READ)   = 0
munmap(0xb7eed000, 115631)              = 0
open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
brk(0)                                  = 0x804c000
brk(0x806d000)                          = 0x806d000
open("/usr/share/locale/locale.alias", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=2586, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f09000
read(3, "# Locale name alias data base.\n#"..., 4096) = 2586
read(3, "", 4096)                       = 0
close(3)                                = 0
munmap(0xb7f09000, 4096)                = 0
open("/usr/lib/locale/it_IT/LC_IDENTIFICATION", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=346, ...}) = 0
mmap2(NULL, 346, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f09000
close(3)                                = 0
open("/usr/lib/locale/it_IT/LC_MEASUREMENT", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=28, ...}) = 0
mmap2(NULL, 28, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f08000
close(3)                                = 0
open("/usr/lib/locale/it_IT/LC_TELEPHONE", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=54, ...}) = 0
mmap2(NULL, 54, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f07000
close(3)                                = 0
open("/usr/lib/locale/it_IT/LC_ADDRESS", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=132, ...}) = 0
mmap2(NULL, 132, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f06000
close(3)                                = 0
open("/usr/lib/locale/it_IT/LC_NAME", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=67, ...}) = 0
mmap2(NULL, 67, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f05000
close(3)                                = 0
open("/usr/lib/locale/it_IT/LC_PAPER", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=39, ...}) = 0
mmap2(NULL, 39, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f04000
close(3)                                = 0
open("/usr/lib/locale/it_IT/LC_MESSAGES", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
close(3)                                = 0
open("/usr/lib/locale/it_IT/LC_MESSAGES/SYS_LC_MESSAGES", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=59, ...}) = 0
mmap2(NULL, 59, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f03000
close(3)                                = 0
open("/usr/lib/locale/it_IT/LC_MONETARY", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=299, ...}) = 0
mmap2(NULL, 299, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f02000
close(3)                                = 0
open("/usr/lib/locale/it_IT/LC_TIME", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=2423, ...}) = 0
mmap2(NULL, 2423, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f01000
close(3)                                = 0
open("/usr/lib/locale/it_IT/LC_NUMERIC", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=59, ...}) = 0
mmap2(NULL, 59, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f00000
close(3)                                = 0
open("/usr/lib/locale/it_IT/LC_CTYPE", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=207720, ...}) = 0
mmap2(NULL, 207720, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7d77000
close(3)                                = 0
chroot("/home/chroot/apache/")          = 0
chdir("/")                              = 0
execve("/usr/sbin/apachectl", ["/usr/sbin/apachectl", "-k", "start"], [/* 45 vars */]) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/it_IT/LC_MESSAGES/coreutils.mo", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=73552, ...}) = 0
mmap2(NULL, 73552, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7eee000
close(3)                                = 0
open("/usr/lib/gconv/gconv-modules.cache", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/gconv/gconv-modules", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=54635, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7eed000
read(3, "# GNU libc iconv configuration.\n"..., 4096) = 4096
read(3, "as\tJS//\t\t\tJUS_I.B1.002//\nalias\tY"..., 4096) = 4096
read(3, "e\tINTERNAL\t\tISO-8859-3//\t\tISO885"..., 4096) = 4096
read(3, "as\tISO-IR-199//\t\tISO-8859-14//\na"..., 4096) = 4096
read(3, "to\t\t\tmodule\t\tcost\nalias\tCSEBCDIC"..., 4096) = 4096
read(3, "e\t\tcost\nalias\tCP284//\t\t\tIBM284//"..., 4096) = 4096
read(3, "as\tCP864//\t\t\tIBM864//\nalias\t864/"..., 4096) = 4096
read(3, "dule\tIBM937//\t\tINTERNAL\t\tIBM937\t"..., 4096) = 4096
read(3, "UC-JP//\nalias\tUJIS//\t\t\tEUC-JP//\n"..., 4096) = 4096
read(3, "dule\t\tcost\nalias\tISO-IR-143//\t\tI"..., 4096) = 4096
read(3, "OX//\nmodule\tISO_10367-BOX//\t\tINT"..., 4096) = 4096
read(3, "dule\tINTERNAL\t\tEUC-JISX0213//\t\tE"..., 4096) = 4096
read(3, "odule\tIBM1130//\t\tINTERNAL\t\tIBM11"..., 4096) = 4096
read(3, "804//\t\tIBM16804//\nalias\tCP16804/"..., 4096) = 1387
read(3, "", 4096)                       = 0
close(3)                                = 0
munmap(0xb7eed000, 4096)                = 0
open("/usr/lib/gconv/ISO8859-1.so", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0P\3\0\000"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=6950, ...}) = 0
mmap2(NULL, 8220, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7d74000
mmap2(0xb7d75000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0xb7d75000
close(3)                                = 0
brk(0x808f000)                          = 0x808f000
open("/usr/share/locale/it/LC_MESSAGES/coreutils.mo", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=73552, ...}) = 0
mmap2(NULL, 73552, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7d62000
close(3)                                = 0
write(2, "chroot: ", 8)                 = 8
write(2, "cannot run command `/usr/sbin/ap"..., 40) = 40
open("/usr/share/locale/it_IT/LC_MESSAGES/libc.mo", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=33665, ...}) = 0
mmap2(NULL, 33665, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7d59000
close(3)                                = 0
open("/usr/share/locale/it/LC_MESSAGES/libc.mo", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=33665, ...}) = 0
mmap2(NULL, 33665, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7d50000
close(3)                                = 0
write(2, ": No such file or directory", 27) = 27
write(2, "\n", 1)                       = 1
close(1)                                = 0
close(2)                                = 0
exit_group(127)                         = ?
Idee ?

Re: Apache chroot

Inviato: ven 30 nov 2007, 11:54
da masalapianta
Dani ha scritto: Idee ?

Codice: Seleziona tutto

execve("/usr/sbin/apachectl", ["/usr/sbin/apachectl", "-k", "start"], [/* 45 vars */]) = -1 ENOENT (No such file or directory)
notare che la execve() sopra viene usata dopo la chroot()

Inviato: ven 30 nov 2007, 12:05
da Dani
...Quindi ? :oops:
In /home/chroot ho la sottodirectory usr/sbin con dentro gli eseguibili (httpd e apachectl). Qual è il problema non capisco !

Inviato: ven 30 nov 2007, 12:10
da masalapianta
Dani ha scritto:...Quindi ? :oops:
In /home/chroot ho la sottodirectory usr/sbin con dentro gli eseguibili (httpd e apachectl). Qual è il problema non capisco !
peccato che tu faccia chroot() in /home/chroot/apache e non in /home/chroot:

Codice: Seleziona tutto

chroot("/home/chroot/apache/")          = 0 

Inviato: ven 30 nov 2007, 12:19
da Dani
masalapianta ha scritto:
Dani ha scritto:...Quindi ? :oops:
In /home/chroot ho la sottodirectory usr/sbin con dentro gli eseguibili (httpd e apachectl). Qual è il problema non capisco !
peccato che tu faccia chroot() in /home/chroot/apache e non in /home/chroot:

Codice: Seleziona tutto

chroot("/home/chroot/apache/")          = 0 
No scusa e' stato un errore di scrittura:

Codice: Seleziona tutto

root[~]# ls /home/chroot/apache/usr/sbin/
apachectl  httpd
root[~]# chroot /home/chroot/apache/ /usr/sbin/apachectl -k start
chroot: cannot run command `/usr/sbin/apachectl': No such file or directory

Inviato: ven 30 nov 2007, 15:31
da masalapianta
apachectl e' uno script di shell che richiama /bin/sh, ce l'hai nella jail chroot?

Inviato: ven 30 nov 2007, 16:16
da Dani
masalapianta ha scritto:apachectl e' uno script di shell che richiama /bin/sh, ce l'hai nella jail chroot?
Si :( e la cosa strana e' che chrootando direttamente non la vede !?

Codice: Seleziona tutto

root[chroot]# pwd;ls apache/bin/ apache/usr/sbin/
/home/chroot
apache/bin/:
bash  sh

apache/usr/sbin/:
apachectl  httpd
root[chroot]# chroot apache/
chroot: cannot run command `/bin/sh': No such file or directory
root[chroot]#

Inviato: ven 30 nov 2007, 22:58
da masalapianta
/bin/sh di solito e' un link simbolico che punta a bash, assicurati che punti a /bin/bash dopo il chroot, oppure per semplificare la cosa sostituiscilo con una copia di bash

Inviato: ven 30 nov 2007, 23:12
da Dani
Già provato, niente da fare...
Guarda qui pero'...Ci sono diversi -1 ENOENT, ad esempio:

Codice: Seleziona tutto

open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
Che sia questo il problema ?

Inviato: ven 30 nov 2007, 23:49
da masalapianta
Dani ha scritto:Già provato, niente da fare...
Guarda qui pero'...Ci sono diversi -1 ENOENT, ad esempio:

Codice: Seleziona tutto

open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
Che sia questo il problema ?
ne dubito, viene usato per archiviare in formato binario i locale del sistema

Inviato: dom 16 dic 2007, 6:35
da Dani
Ho rifatto tutto daccapo e con piu' calma ed e' andato :-)
Probabilmente il problema era qualche libreria mancante, o magari qualche symlink rotto.
Inoltre non bisogna avviare il server con apachectl dato che questo script lancia binari non presenti nella jail, ma bisogna lanciare direttamente httpd !
Ho avuto qualche altro problemino ma è bastato un cat su error_log per risolvere ;)

ps: non riusciva a lanciare la bash perchè non avevo copiato le librerie da essa richiesta (ldd /bin/bash), in ogni caso l'ho eliminata dalla jail dato che non servirebbe a nulla.