Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
root@serwer:~# jk_chrootlaunch --jail /var/www/ --exec /var/www/usr/sbin/nginx [emerg]: open() "/etc/nginx/nginx.conf" failed (2: No such file or directory)
root@serwer:~# jk_chrootlaunch --jail /var/www/ --exec /var/www/usr/sbin/nginx -- -c /var/www/etc/nginx.conf [emerg]: open() "/var/www/etc/nginx.conf" failed (2: No such file or director
Jakieś sugestie? Ostatnio działo dobrze.
Oczywiście config jest w /var/www/etc/nginx.conf
Ostatnio edytowany przez womperm (2011-07-04 03:15:21)
Offline
Konfiguracja nginx standardowo znajduje się w katalogu /etc/nginx chyba, że coś zmieniałeś.
Offline
Spróbuj zwykłym poleceniem chroot
np:
chroot /var/www /usr/sbin/nginx -{opcje}
Offline
(Pozwalam sobie swobodnie traktować cytowany tekst)
womperm napisał(-a):
Oczywiście config jest w /var/www/etc/nginx.conf
A powinien być…
womperm napisał(-a):
Kod:
root@serwer:~# jk_chrootlaunch --jail /var/www/ --exec /var/www/usr/sbin/nginx [emerg]: open() "/etc/nginx/nginx.conf" failed (2: No such file or directory)
/var/www/etc/nginx/nginx.conf
womperm napisał(-a):
Kod:
root@serwer:~# jk_chrootlaunch --jail /var/www/ --exec /var/www/usr/sbin/nginx -- -c /var/www/etc/nginx.conf [emerg]: open() "/var/www/etc/nginx.conf" failed (2: No such file or director
/var/www/var/www/etc/nginx.conf
Offline
Minio napisał(-a):
....
/var/www/var/www/etc/nginx.conf
Można spróbować, ale jedna uwaga:
Jeśli chroot jest w /var/www to np program chroot powinein pójść ścieżką względną, poniewaz polecenie opdalenia nginxa, i szukania konfigu odbywa się w chroocie.
A poza tym, jeśli nginx ma przelącznik -c - pozwalający wskazanie konfiga, a są tylko 3 możliwości zdeklarowania miejsca, gdzie jest konfig, czyli: ścieżka wzlędna z chroot /etc/nginx/nginx.conf i bezwzlędna /var/www/etc/nginx/nginx.conf, do tego ewentualnie
/var/www/var/www/etc/nginx/nginx.conf to chyba najprościej jest popróbować wszystkie opcje.
To by było na tyle
;-)
Ostatnio edytowany przez Jacekalex (2011-07-04 16:07:49)
Offline
root@serwer:/var/run# chroot /var/www /usr/sbin/nginx -c /etc/nginx/nginx.conf [emerg]: getpwnam("www-data") failed (2: No such file or directory) in /etc/nginx/nginx.conf:1
W necie znalazłem to http://forum.nginx.org/read.php?2,163489,163540#msg-163540
Jednakże u mnie nie działa (nginx nie wygenerował w chroocie pliku PID).
Przypominam że nie zamierzam korzystać z jakiś badziewnych skryptów (patrz forum nginx).
Offline
pokaż wynik
grep 'www-data' /var/www/etc/passwd /var/www/etc/group
Bo najwyraźniej nginx próbuje wstać z uprawnieniami usera lub grupy, których nie ma w chroocie.
Jeśli orobileś tego chroota jailkitem, to w konfigu ustwiałeś tam usera i grupę dla nginxa, czy to była www-data?
Ostatnio edytowany przez Jacekalex (2011-07-06 15:29:20)
Offline
Nie była to www-data, tylko same rooty. Hmm muszę tego jailkita stawiać na nowo?
Offline
Było by to sensowne rozwiązanie (byle porządnie zrobione), choć najpierw spróbuj z palca dopisać w chroocie grupę www-data, i usera www-data, dać mi numery id 33.
Z Debiana - domyslne:
/etc/passwd:
www-data:x:33:33:www-data:/var/www:/bin/sh
/etc/group:
www-data:x:33:
Albo w konfigu nginxa zmień usera i grupę na takie, jakie masz dostępne w chroocie (byle nie root).
Ostatnio edytowany przez Jacekalex (2011-07-06 15:35:21)
Offline
root@serwer:/var/www/etc# jk_chrootlaunch -u www-data -g www-data -j /var/www/ -x /var/www/usr/sbin/nginx [alert]: could not open error log file: open() "/var/log/nginx/error.log" failed (2: No such file or directory) 2011/07/06 16:23:32 [warn] 1966#0: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:1 2011/07/06 16:23:32 [emerg] 1966#0: open() "/etc/nginx/mime.types" failed (2: No such file or directory) in /etc/nginx/nginx.conf:13
Już wole skompilować ze źródeł, tylko mam pytanie, takich bibliotek potrzebuje?
Dodam też że ten jail to jakieś nie porozumienie... Chyba tylko u mnie, gdyż gdy jest w /etc/nginx/nginx.conf plik to działa.
Ale gdy go nie ma i staram się zmusić go do działania w chroocie to nie poddaje się tak łatwo. Dziwi mnie to że on odczytuje
plik który jest poza chrootem (/etc/, chroot jest w /var/www/).
Ostatnio edytowany przez womperm (2011-07-06 18:33:04)
Offline
Nginx musi wystartować jako root, żeby otworzyć socket na porcie 80, potem zrzuca uprawnienia na wskazanego użytkownika.
Dlatego master proces działa jako root, a worker proces jako użytkownik zdefiniowany w konfigu.
Tak samo działa Apache, a np Lighttpd też musi ruszyć jako root, po czym sam zrzuci uprawnienia roota.
Np tylko root może otworzyć gniazdo na porcie niższym niż 1024, dlatego serwery www działają w ten sposób.
Nawiasem pisząc, Nginx o powyższym uprzejmie zawiadomił:
[alert]: could not open error log file: open() "/var/log/nginx/error.log" failed (2: No such file or directory)
2011/07/06 16:23:32 [warn] 1966#0: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:1
2011/07/06 16:23:32 [emerg] 1966#0: open() "/etc/nginx/mime.types" failed (2: No such file or directory) in /etc/nginx/nginx.conf:13
Ostatnio edytowany przez Jacekalex (2011-07-06 19:34:20)
Offline
[nginx] comment = the nginx webserver, very basic setup, probably too limited for you executables = /usr/sbin/nginx users = root, nginx, www-data groups = root, nginx, www-data includesections = netbasics, uidbasics
root@serwer:~# jk_init -j /var/www/ nginx Copying /usr/sbin/nginx to /var/www/usr/sbin/nginx Creating symlink /var/www/lib/i686/cmov/libcrypt.so.1 to libcrypt-2.11.2.so Copying /lib/i686/cmov/libcrypt-2.11.2.so to /var/www/lib/i686/cmov/libcrypt-2.11.2.so Creating symlink /var/www/lib/libpcre.so.3 to libpcre.so.3.12.1 Copying /lib/libpcre.so.3.12.1 to /var/www/lib/libpcre.so.3.12.1 Copying /usr/lib/i686/cmov/libssl.so.0.9.8 to /var/www/usr/lib/i686/cmov/libssl.so.0.9.8 Copying /usr/lib/i686/cmov/libcrypto.so.0.9.8 to /var/www/usr/lib/i686/cmov/libcrypto.so.0.9.8 Creating symlink /var/www/usr/lib/libz.so.1 to libz.so.1.2.3.4 Copying /usr/lib/libz.so.1.2.3.4 to /var/www/usr/lib/libz.so.1.2.3.4 Creating symlink /var/www/usr/lib/libGeoIP.so.1 to libGeoIP.so.1.4.7 Copying /usr/lib/libGeoIP.so.1.4.7 to /var/www/usr/lib/libGeoIP.so.1.4.7 Creating symlink /var/www/lib/i686/cmov/libc.so.6 to libc-2.11.2.so Copying /lib/i686/cmov/libc-2.11.2.so to /var/www/lib/i686/cmov/libc-2.11.2.so Creating symlink /var/www/lib/i686/cmov/libdl.so.2 to libdl-2.11.2.so Copying /lib/i686/cmov/libdl-2.11.2.so to /var/www/lib/i686/cmov/libdl-2.11.2.so Creating symlink /var/www/lib/ld-linux.so.2 to ld-2.11.2.so Copying /lib/ld-2.11.2.so to /var/www/lib/ld-2.11.2.so
root@serwer:~# jk_chrootlaunch -j /var/www/ -x /var/www/usr/sbin/nginx[alert]: could not open error log file: open() "/var/log/nginx/error.log" failed (2: No such file or directory) 2011/07/06 18:46:01 [emerg] 1843#0: open() "/etc/nginx/nginx.conf" failed (2: No such file or directory)
root@serwer:/var/www/etc# mv /etc/nginx/nginx.conf /var/www/etc/nginx/nginx.conf root@serwer:/var/www/etc# jk_chrootlaunch -j /var/www/ -x /var/www/usr/sbin/nginx [alert]: could not open error log file: open() "/var/log/nginx/error.log" failed (2: No such file or directory) 2011/07/06 18:50:35 [emerg] 1856#0: getpwnam("www-data") failed (2: No such file or directory) in /etc/nginx/nginx.conf:1
W przypadku innych ścieżek jest to samo.
Poniżej daje config nginxa:
user www-data; worker_processes 1; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 1024; # multi_accept on; } http { include /etc/nginx/mime.types; access_log /var/log/nginx/access.log; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; tcp_nodelay on; gzip on; gzip_disable "MSIE [1-6]\.(?!.*SV1)"; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; server { listen 80; server_name localhost; location / { root /var/www/data/; index index.html; } }
Offline
A nie możesz wrzucić so tego jaila basha, potem wejść do niego poleceniem
chroot /var/www
A potem odpalić Nginxa z palca, i zobaczyć, czy znajdzie wszystkie scieżki?
Bo być może chrootlauch nie ustawia jakichś zmiennych, i dlatego nginx głupieje.
ja w ogóle zrobiłbym najpierw testowego jaila, wrzucił do niego basha, env, i nginxa, i sprawdził, czy wstaje nginx, i czy zmienne w chroocie są prawidłowe.
A potem dopiero postawił na tym samym konfigu jaila produkcyjnego bez basha i env.
Poza tym jk_init fajnie kopiuje biblioteki, ale odpalałbym standardowym poleceniem chroot.
Przy nim przynajmniej wiadomo, co jest grane.
jak odpalę
chroot /folder /usr/bin/program,
to mam pewność, ze program widzi /folder jako partycję root, i w nim szuka bibliotek i konfigów.
np chroot do Debiana:
chroot /Debian 22:20:58 / Debian root # which bash /bin/bash
man chroot
A u Ciebie coś nie gra, albo z konfiguracją, albo ze zmiennymi w jailu.
Poza tym widzę, że nie ogarniasz faktu, ze program odpalany w chroot widzi folder chroot jako główny system plików, taki jest sens działania każdego jaila i chroota.
To by bylo na tyle
;-)
Ostatnio edytowany przez Jacekalex (2011-07-06 22:27:44)
Offline
Właście "ogarniam ten fakt" nginx, jest w partycji slash...
Poza tym ten jail to tylko dodatek który ma za zadanie uprościć stawienie chrootów, a nie port z FreeBSD.
root@serwer:~# chroot /var/www/ I have no name!@serwer:/# usr/sbin/nginx [alert]: could not open error log file: open() "/var/log/nginx/error.log" failed (2: No such file or directory) 2011/07/07 13:24:08 [emerg] 2042#0: getpwnam("www-data") failed (2: No such file or directory) in /etc/nginx/nginx.conf:1
Offline
A w chrocie jest folder /var/log/nginx/ -z prawami zapisu dla Nginxa? - czyli usera i grupy www-data?
A jeśli np www-data - user ma folder domowy - domyślnie /var/www, to w chroocie ma dostępny ten folder domowy?
Bo zrobileś sobie chroota w /var/www, w tym chroocie potrzebujesz folderu /var/www i kilka innych, i zakrecileś sie z tymi ścieżkami do folderów, jak słoik z konfiguturami.
jeśli serwer nie może otworzyć error.log, a jeśli nie ma tego pliku, to tworzy nowy, to znaczy że nie ma folderu /var/log/nginx, albo nginx nie ma prawa w nim zapisywać.
A co do:
2011/07/07 13:24:08 [emerg] 2042#0: getpwnam("www-data") failed (2: No such file or directory) in /etc/nginx/nginx.conf:1
to co może oznaczać "No such file or directory" - czy przypadkiem nie brak folderu domowego dla www-data w chroocie?
Ostatnio edytowany przez Jacekalex (2011-07-07 15:57:08)
Offline
root@debian:~# chroot /var/www/ I have no name!@debian:/# nginx [emerg]: getpwnam("www-data") failed (2: No such file or directory) in /etc/nginx/nginx.conf:1
Utworzyłem folder w /var/www/home/www-data i chown www-data:www-data www-data i ok.
Tylko że nadal jest taki sam błąd jak powyżej.
Offline
A jaki folder ma www-data w chroocie, w tamtejszym /etc/passwd?
Bo pierwszy raz słyszę, żeby $HOME usera www-data był w home.
A o tym, gdzie jest folder domowy usera decyduje wpis w /etc/passwd dotyczący tego usera.
Edyta:
Nie wiem, coś popierzył i namieszał.
Właśnie przed chwilą postawiłem nginxa w chroocie, jk_init skopiował programy i biblioteki, ale konfigurację i certyfikat ssl musiałem skopiować ręcznie, również ręcznie skopiowałem urządzenia w /dev urandom, random i null, zrobiłem też foldery /var/www, /var/log/nginx i /var/run/nginx.
Tu masz listę plików z jaila, porównaj ze swoją listą:
http://pastebin.com/RWuwEbrf
W każdym razie nginx działa, ssl w nginxie działa, nie idzie php., bo nie może się dostać do socketu php.fpm , ale generalnie znalazł i konfigurację, i certyfikat ssl,
i ruszył.
chroot /jail bash-4.1# nginx bash-4.1# ps bash: ps: command not found bash-4.1# ls bin dev etc lib sbin usr var bash-4.1# ls -l /var/run/nginx ls: cannot access /var/run/nginx: No such file or directory bash-4.1# ls -l /var/run/nginx* -rw-r--r-- 1 root root 6 Jul 7 16:45 /var/run/nginx.pid bash-4.1# cat /var/run/nginx.pid 27102 bash-4.1# cat /etc/passwd root:x:0:0:root:/root:/bin/bash nginx:x:117:985:added by portage for nginx:/dev/null:/sbin/nologin bash-4.1# cat /etc/shadow cat: /etc/shadow: No such file or directory bash-4.1#
root # p nginx root 27102 0.0 0.0 10428 508 ? Ss 18:45 0:00 nginx: master process nginx nginx 27103 0.1 0.0 10768 2008 ? S 18:45 0:00 nginx: worker process
Z nmapa:
81/tcp open http nginx 449/tcp open http nginx
echo GET | ncsl localhost 449 <html> <head><title>400 Bad Request</title></head> <body bgcolor="white"> <center><h1>400 Bad Request</h1></center> <hr><center>nginx</center> </body> </html>
W rolach głównych udział wzięli:
Gentoo Hardened
Nginx
Jailkit
Chroot
Bash
To by było na tyle
;-)
Ostatnio edytowany przez Jacekalex (2011-07-07 20:08:32)
Offline
No nie wiem jak ten nginx Ci wstał, skoro masz w /etc/nginx/3nginx.conf chyba że przełącznik -c ;)
Możesz podać plik /etc/passwd & /etc/group który masz w chroocie.
Offline
cat /jail/etc/group root:x:0:root nginx:x:985:
cat /jail/etc/passwd root:x:0:0:root:/root:/bin/bash nginx:x:117:985:added by portage for nginx:/dev/null:/sbin/nologin
A /etc/nginx/3nginx.conf, to zapasowy konfig, skopiował się razem z folderem, nic nie znaczy w uruchomieniu nginxa.
Tu jest nowy chroot, bez basha: http://pastebin.com/08GyDmbf
Tylko /usr/lib/php kopiowalem ręcznie, dlatego jest tam trochę śmiecia.
Działa Nginx, działa Php-fpm - oba wstają ale nie mogę dojsć do ładu z konfigiem Nginxa, widzę tylko błędy 403, 502.
Ale to innym razem ;)
Ostatnio edytowany przez Jacekalex (2011-07-07 22:56:04)
Offline
Hmm, u mnie to samo co było wcześniej.
W jaili masz jakoś inaczej nginxa dodanego?
Dodajesz dodatkowe biblioteki takie jak. netbasic (czy coś w tym stylu?)
Offline
Masz listę plików i folderów z jaila?
Wydaje mi sie, że tak - nawet dwa razy.
To o co jeszcze się pytasz?
Odpalenie?
z roota
chroot /jail nginx
i chodzi, jeszcze muszę obczaic, czemu wywala 403 na pliki, do których wszyscy mają dostęp.
Ale konfig znajduje, a tego dotyczy wątek.
Kombinuj.
jk_init, - konfig;
[nginx] comment = the nginx webserver, very basic setup, probably too limited for you executables = /usr/sbin/nginx users = root, nginx groups = root, nginx devices = /dev/urandom, /dev/null regularfiles = /etc/nginx/*, /etc/ssl/apache.pem includesections = netbasics, uidbasics
cert musialem kopiować recznie.
[php-fpm] comment = php-fpm executables = /usr/bin/php-fpm users = nobody groups = nogroup libraries = /lib/libgcc_s.so.1, /usr/lib/libstdc++.so.*, /usr/lib/php* devices = /dev/random, /dev/zero regularfiles = /etc/php/fpm-*, includesections = netbasics, uidbasics
Jeszcze do poprawki.....
To by było na tyle
;-)
Ostatnio edytowany przez Jacekalex (2011-07-08 00:28:15)
Offline
Skasowałem poprzedni tekst, uważam że jest zbędny.
Wpadłem na pomysł aby nginxa skompilować ze źródła, ale nie chcę aby był on z openssl, a w ./configure nie widzę aby było coś z without.
Mam openssl, tylko że --with-openssl=DIR set path to OpenSSL library sources muszę mieć źródła openssl?
Poza tym, ja z tego nie będę korzystać, więc po co mi to?
Szkoda że w debianie nie ma portów (coś a'la freebsd, tylko że tam też miałem problem bo nie dociągał zależności).
Ostatnio edytowany przez womperm (2011-07-08 02:11:41)
Offline
Ja w Debianie polecam trzymać się stabilnego i bezpiecznego systemu, jaki przygotowali Developerzy.
Do zabawy mam Gentoo, gdzie z Nginxem i flagami problemów nie ma.
Sznurek: http://pastebin.com/fcAftUps
Ostatnio edytowany przez Jacekalex (2015-03-08 09:43:56)
Offline
Strony: 1