LINUX.ORG.RU

lighttpd & /bin/bash

 


0

1

Доброго дня господа.
Захотелось мне через lighttpd cgi выполнить bash-скрипт.
И как-то никак, вне зависимости от всего.
Тестовая часть конфига lighttpd (каша из всех вариантов):

cgi.assign = ( ".sh" => "/bin/bash" )
$HTTP["url"] =~ "^/" {
   cgi.assign = ( ".sh"  => "/bin/bash" )
}
static-file.exclude-extensions = (".sh" )
Но при этом, выполнят скрипт всё равно sh, не смотря на прямые указания в конфиге и шабэнг в скрипте.
Сам пользователь веб-сервера проблем с доступом к башу не имеет; руками из его шелла (по дэфолту sh, смена на bash так же не лечит) - скрипт отрабатывает как положено. Может кто-то сталкивался, и знает как полечить?

Вопрос относительно спецецический, но а вдруг.
Буду благодарен ответившим по делу.

Ответ на: комментарий от anonymous

Cкрипт:

#!/bin/bash

echo "Content-type: text/html\n"

# our html code
echo "<html>"
echo "<head><title>Hello CGI</title></head>"
echo "<body>"
echo "<pre>"

echo "Hello world
dbg:
1::$1
2::$QUERY_STRING
3::$SHELL"

echo "</pre>"
echo "</body>"
echo "</html>"
В выхлопе странички только "3::/bin/sh"
Ну а вообще оно и без того ясно было, ибо краш на башизмах, это можно и ручками проверять было.

Spirit_of_Stallman ★★★
() автор топика
Последнее исправление: Spirit_of_Stallman (всего исправлений: 1)
Ответ на: комментарий от Spirit_of_Stallman

3::$SHELL

Ненадежно же, уж лучше cat /proc/$$/comm

ибо краш на башизмах

Ну в приведенном коде башизмов я не вижу (они были бы понадежнее $SHELL :), btw в sh как линке на bash перекочевали некоторые: brace-expansion, скажем).

anonymous
()
Ответ на: комментарий от anonymous

Ненадежно же, уж лучше cat /proc/$$/comm

Заменил $SHELL на $(cat /proc/$$/comm) - сервер сообщает о ошибке.
Снова же, ручками всё отрабатывает.
Я в глубоком замешательстве.
Захотелось посмотреть дэбаг cgi, а гугл говорит, что только для fastcgi такая радость есть.

Ну в приведенном коде башизмов я не вижу (они были бы понадежнее $SHELL :), btw в sh как линке на bash перекочевали некоторые: brace-expansion, скажем).

Этот скрипт был только для «абы хоть что-то уже показало» :)
А вообще, для примеру, было объявление функции через function, в виде что отрабатывает баш и не отрабатывает sh.

Spirit_of_Stallman ★★★
() автор топика
Ответ на: комментарий от Spirit_of_Stallman

сервер сообщает о ошибке

Chroot? Ну, может ps / pgrep хоть смогут показать $$.

объявление функции через function

Там sh отдельный от bash? А то ведь линк на последний кушает function. Может по-другой причине краш был.

В любом случае мне пока представляется более вероятной ситуация неправильного определения оболочки, чем то, что lighttpd чудесным образом запускает sh.

anonymous
()
Ответ на: комментарий от anonymous

Chroot?

Нет, чрута не было.

Ну, может ps / pgrep хоть смогут показать $$.

$(ps ax | grep -v grep | grep «$$») подтвердил что вы были правы, и выполняет таки баш.

В любом случае мне пока представляется более вероятной ситуация неправильного определения оболочки, чем то, что lighttpd чудесным образом запускает sh.

Хуже. Я сам себе злобный буратинатор-завоеватель.
В общем, посмотрел на ситуацию с другой стороны, после доказательства что запускает таки баш.
И оказалось что просто этот тестовый скрипт, в определённых условиях (многосточных) почему-то «разламывал» вышлоп, чего было не заметить в консольке. И на деле это ошибка не самого скрипта, так сказать, а уже сбора валидного html, с того, что он выдавал, как я понимаю.
В общем исправил - и теперь всё работает.

Спасибо большое на становление на путь истинный; и прошу прощения за потраченное время, действительно мой прокол.

Spirit_of_Stallman ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.