Решено: Не обрабатывает заголовки типа #!/usr/bin/perl (пытается запустить в sh)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Аватара пользователя
Ufomen
Сообщения: 81
ОС: CentOS 5.3

Решено: Не обрабатывает заголовки типа #!/usr/bin/perl

Сообщение Ufomen »

Всем привет!
Поставил qmHandle который по сути является перловым скриптом, пытаюсь запустить - плюется ошибками

Код: Выделить всё

# ./qmHandle -s
./qmHandle: line 10: use: command not found
./qmHandle: line 11: use: command not found
./qmHandle: line 12: use: command not found
./qmHandle: line 14: my: command not found
./qmHandle: line 20: syntax error near unexpected token `$queue'
./qmHandle: line 20: `my ($queue) = '/var/qmail/queue/';'


Из этого в общем то понятно, что он пытается выполнить его как обычный #sh скрипт, смотрим что у пациента внутри

Код: Выделить всё

#!/usr/bin/perl
#
# qmHandle
#
# Copyright(c) 1998 -> 2003 Michele Beltrame <mb@italpro.net>
#
# This program is distributed under the GNU GPL.
# For more information have a look at http://www.gnu.org

use strict;
use warnings;
use diagnostics;


Внутри есть указание искать перл там где ему и положено быть. Проверяю перл имеется, запускаю скрипт с помощью

# perl ./qmHandle

Все отлично работает... только приходится выходить из перла с помощью ctrl+ c

Собственно вопрос... Почему могут некорректно не обрабатываться заголовки скриптов?
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Решено: Не обрабатывает заголовки типа #!/usr/bin/perl

Сообщение sash-kan »

между первой и второй строками какие символы стоят?
$ hexdump -C ./qmHandle | head -n 2
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
Ufomen
Сообщения: 81
ОС: CentOS 5.3

Re: Решено: Не обрабатывает заголовки типа #!/usr/bin/perl

Сообщение Ufomen »

sash-kan писал(а):
22.05.2009 23:17
между первой и второй строками какие символы стоят?
$ hexdump -C ./qmHandle | head -n 2


Код: Выделить всё

# hexdump -C ./qmHandle | head -n 2
00000000  23 21 2f 75 73 72 2f 62  69 6e 2f 70 65 72 6c 0a  |#!/usr/bin/perl.|
00000010  23 0a 23 20 71 6d 48 61  6e 64 6c 65 0a 23 0a 23  |#.# qmHandle.#.#|

Устанавливал этот скрипт до этого на нескольких машинах из этого же места, все работало отлично, на этой такое ощущение что просто не обрабатывает заголовок, или не сопоставляет perl этому заголовку...

ставлю всегда из http://surfnet.dl.sourceforge.net/sourcefo...le-1.3.2.tar.gz
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Решено: Не обрабатывает заголовки типа #!/usr/bin/perl

Сообщение sash-kan »

Ufomen писал(а):
22.05.2009 22:39
# ./qmHandle -s
камикадзе?

ну давайте пройдёмся по некоторым менее вероятным вариантам:
1. executable bit
2. файловая система и опции её монтирования (noexec).
3. название и версия shell-а.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
Ufomen
Сообщения: 81
ОС: CentOS 5.3

Re: Решено: Не обрабатывает заголовки типа #!/usr/bin/perl

Сообщение Ufomen »

sash-kan писал(а):
22.05.2009 23:40
Ufomen писал(а):
22.05.2009 22:39
# ./qmHandle -s
камикадзе?

ну давайте пройдёмся по некоторым менее вероятным вариантам:
1. executable bit
2. файловая система и опции её монтирования (noexec).
3. название и версия shell-а.


Код: Выделить всё

# ls -la
total 54
drwxrwxr-x    2 510      510          1024 May 22 20:14 .
drwxr-x---    5 root     root         1024 May 22 19:06 ..
-rw-rw-r--    1 510      510         18009 Jul 11  2007 GPL
-rw-rw-r--    1 510      510          4115 Jul 11  2007 HISTORY
-rw-rw-r--    1 510      510          5037 Jul 11  2007 README
-rwxrwxr-x    1 510      510         22331 May 22 20:13 qmHandle


Хм, а вот тут забавно! почему владелец файла некто под номером 510 О_о
Сделал su - root зашел под рутом!

сделал chown

Код: Выделить всё

# ls -la
total 54
drwxrwxr-x    2 root     510          1024 Jul 11  2007 .
drwxr-x---    5 root     root         1024 May 22 22:06 ..
-rw-rw-r--    1 root     510         18009 Jul 11  2007 GPL
-rw-rw-r--    1 root     510          4115 Jul 11  2007 HISTORY
-rw-rw-r--    1 root     510          5037 Jul 11  2007 README
-rwxrwxr-x    1 root     510         22290 Jul 20  2007 qmHandle


Результат тот же

Код: Выделить всё

# ./qmHandle
./qmHandle: line 10: use: command not found
./qmHandle: line 11: use: command not found
./qmHandle: line 12: use: command not found
./qmHandle: line 14: my: command not found
./qmHandle: line 20: syntax error near unexpected token `$queue'
./qmHandle: line 20: `my ($queue) = '/var/qmail/queue/';'


# mount
noexec - ов не нашел.

версия GNU bash, version 2.05b.0(1)-release (i386-redhat-linux-gnu)


Да и еще когда скачиваешь по wget ложится с владельцм root
-rw-r--r-- 1 root root 15423 Jul 20 2007 qmhandle-1.3.2.tar.gz

после разархивирования
# tar -xvzf qmhandle-1.3.2.tar.gz

а вот папка!!!

drwxrwxr-x 2 510 510 1024 Jul 11 2007 qmhandle-1.3.2

но после chown собсна тоже самое как я и писал.
Спасибо сказали:
Аватара пользователя
Ufomen
Сообщения: 81
ОС: CentOS 5.3

Re: Решено: Не обрабатывает заголовки типа #!/usr/bin/perl

Сообщение Ufomen »

Вопрос отпадает, походу перл хакнули :) От такие пироги!

Код: Выделить всё

-bash-2.05b# file /usr/bin/perl
/usr/bin/perl: symbolic link to /usr/bin/perl-wrapper
-bash-2.05b# cd /initrd
-bash-2.05b# file /usr/bin/perl-wrapper
/usr/bin/perl-wrapper: Bourne shell script text executable
-bash-2.05b# cat /usr/bin/perl-wrapper
#!/bin/sh
echo PWD: $PWD >> /var/tmp/perl.send
echo ARGS: "$@" >> /var/tmp/perl.send
cat | tee -a /var/tmp/perl.send|/usr/bin/perl-orig "$@"
Спасибо сказали: