LINUX.ORG.RU

Сообщения nial

 

Apache выполняет программы

Форум — Admin

пожалуйста, подскажите как его отучить выполнять бинарные файлы.

дело в том, что он исполняет как-то странно: ему не важно, есть ли бит исполняемости на файле, и сначала он "выводит" содержимое бинарника, а потом результат его работы.

я уже все что связано с CGI закоментировал, а ему пофиг.

nial
()

Apche and CGI execution

Форум — Admin

Пытаюсь отучить Apache выполнять программы. все опции, которые связаны с CGI, я в конфигах закоментировал. теперь он не "понимает" файлы с расширением cgi.

Так знаете что он делает когда я ложу в любой каталог исполняемый файл (в названии фала нет намека на cgi) ? - он сначала выводит сожержимое этого файла (бинарного), а потом исполняет его ! я бит исполнения убрал - ему пофиг.

я не понимаю, какого хера они вообще придумали технологию CGI, если ее отключить нельзя !

может кто-то сталкивался с такими проблемами ? Apache версии 1.3.28 дистрибутив - Slackware 9.1

nial
()

SNMP

Форум — Admin

Можно ли ядро Линукса заставить отвечать на SNMP пакеты. требуеться чтоб MRTG собирал статистику с сетевого интерфейса.

nial
()

DOS (msdos) и протокол SMB

Форум — General

может кто-нибудь использовал и подскажет программы для доса для связи по самбе. надо просто чтоб дос смог подключить шары других машин, и качать оттуда данные.

почему сюда пишу - денег на инет нет, и попробовать поискать проги самому для меня болезненно.

спасибо за ответы.

nial
()

DNS Full Tutorial

Форум — General

Ух, уж 3 года знаком с DNS, недавно пришлось его по-настоящему настраивать - оказалось многого не знал.
Но что меня вообще вывело из себя, так это новые "горизонты" в отношении доменов. К примеру - Custom DNS, Static DNS,... Оказываеться, трансфер зоны не "просто так" делаеться. И еще много-много чего.

Я чего сюда пишу - в инете искал документацию про DNS, но кроме dyndns.org (откуда вопросы и взялись) ничего путного не нашел. (не скрою, знания вроде есть чтоб домен держать, а вот больше...). 

Короче, может усть у кого ссылка на хороший ресурс (описание работы DNS)(only not rfc :)).
Спасибо.
nial
()

Inetd при пересыыке почты

Форум — Admin

он нужен или это не актуально

nial
()

550 Valid relay MUST have PTR DNS record.

Форум — Admin

Здравствуйте.

Короче,такой трабл: я с домена nkkep.dp.ua посылаю почту на teleportsv.net

в ответ с relay.teleportsv.net получаю: (кидаю с заголовком) >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>> This message was created automatically by mail delivery software.

A message that you sent could not be delivered to one or more of its recipients. This is a permanent error. The following address(es) failed:

alex@teleportsv.net SMTP error from remote mailer after MAIL FROM:<nial@nkkep.dp.ua> SIZE=2950: host relay.teleportsv.net [193.41.48.230]: 550 Valid relay MUST have PTR DNS record.

------ This is a copy of the message, including all the headers. ------

Return-path: <nial@nkkep.dp.ua> Received: from firstserv.koledg ([192.168.0.1] helo=server.nkkep.edu) by relay.nkkep.dp.ua with esmtp (Exim 4.43) id 1CoOLE-0005yS-8C for alex@teleportsv.net; Tue, 11 Jan 2005 17:53:56 +0200 Date: Tue, 11 Jan 2005 17:54:29 +0300 From: nial <nial@nkkep.dp.ua> X-Mailer: The Bat! (v1.61) Reply-To: nial <nial@nkkep.dp.ua> Organization: Nkkep.dp.ua X-Priority: 3 (Normal) Message-ID: <43977258142.20050111175429@nkkep.dp.ua> To: alex@teleportsv.net Subject: =?Windows-1251?B?wuDq4O3x6P8=?= MIME-Version: 1.0 Content-Type: text/plain; charset=Windows-1251 Content-Transfer-Encoding: 8bit

в dns вроде все правильно прописано. Может есть опытные людм - подскажите, в чем проблема. и еще, если не тяжело, сделайте nmap relay.nkkep.dp.ua - и ответ перешлите на nial at ukr dot net

спасибо за ответы.

nial
()

сканер работающих машин

Форум — Development

(исходники nmap'a изучал - но хер что понял)

пишу сканер работающих машин в локальной сети (мне нехер делать)

посылаю запрос на 80-й порт, и по результатам определяю - включена машина или нет.

смотрел как это делает nmap (простой пинг) (я с него идею 80-го скопировал) - он сразу на все машины сокеты открывает. причем если на машине стоит apache, рвет соединение.

вопрос: как его правильно рвать, это соединение. через netstat вижу висящий SYN запрос на машину, хотя close(socket) сделал. пытался shutdown(socket) - тоже нихрена, висит соединение.

и еще :) - как nmap открывает сразу много сокетов и шлет через них сразу - вроде fork он не использует, в системе висит всего один процесс, а сокетов - тьма.

может можно от ожидания ответа сокета отказаться, и начать открывать новый ? ума просто не приложу.

заранее спасибо.

nial
()

Регулярные выражения

Форум — Development

Интересуюсь, если ли в glibc такие функции, т.е. сравнение по шаблону. дескать удовлетворяет ли строка 'sas456.ppp0' какуму нибудь шаблону.

nial
()

Дистры линукса

Форум — Talks

меня давно этот вопрос мучает: есть несколько дистров линукса, а вот где их применяют в основном, мне так и не известно. и как они держат себя в плане безопасности. Слышал самые противоречивые мнения. интересно послушать что-то стоящее. Например про Слаку (я ее юзаю)

nial
()

Как правильно руссифицировать Slackware 9.1

Форум — General

уже надоело возиться с нею. я знаю, что чего-то не так делаю, а вот что - не знаю :) помогите, а ! хоть линк киньте.

nial
()

Обещаный код с ошибкой __int_malloc

Форум — Development

вот код, который обещал выложить. это описание списка, который содержит еще один список.

<<< cut begin >>>

typedef struct data_define {
char * templ;
char * descr;
} Data;

typedef struct Nod_define {
Data data;
struct Nod_define * next;
} Nod;

typedef struct Spisok_define {
Nod * start, *current;
char * Name;
char * FileName;
char * Template;
unsigned long Count;
} Spisok;

/*
* TEMPLATE LIST
*/

typedef struct Template_data_define {
Spisok * List;
} Template_Data;

typedef struct Template_Nod_define {
Template_Data data;
struct Template_Nod_define * next;
} Template_Nod;

typedef struct Template_Spisok_define {
Template_Nod * start, *current;
unsigned long Count;
} Template_Spisok;

void Init_Spisok(Spisok *L);
unsigned int Spisok_Add(Spisok *L, Data *dt);
Data * Spisok_Get(Spisok *L, unsigned int z);
void Spisok_Delete(Spisok *L,unsigned int z);

void Init_Template_Spisok(Template_Spisok *L);
unsigned int Template_Spisok_Add(Template_Spisok *L, Template_Data *dt);
Template_Data * Template_Spisok_Get(Template_Spisok *L, unsigned int z);
void Template_Spisok_Delete(Template_Spisok *L,unsigned int z);


void Init_Spisok(Spisok *L)
{
L->start = L->current = NULL;
L->Count = 0;
};

unsigned int Spisok_Add(Spisok *L, Data *dt)
{
Nod * p;

if (!(p = (Nod *) malloc(sizeof(Nod))))
return RES_FALSE;


p->data = *dt;
p->next = NULL;

if(!L->start)
L->start = L->current = p;
else
L->current = L->current->next = p;
L->Count++;

return RES_TRUE;
};

Data * Spisok_Get(Spisok *L, unsigned int z)
{
unsigned int i;
Nod * t;

t = L->start;

for(i=0;i<z;i++) {
if(t->next)
t = t->next;
else
return &(t->data);
}

return &(t->data);
};

void Spisok_Delete(Spisok *L,unsigned int z)
{
unsigned int i;
Nod *t,*p;

if (L->Count == 0)
return;

if( z == 0 || L->Count == 1) {
p = L->start;
L->start = L->start->next;
free(p);
}
else {
t = L->start;

for (i=0;i<(z-1);i++)
if (t->next->next)
t = t->next;

p = t->next;

if (!t->next->next)
L->current = t;
t->next = t->next->next;

free(p);
}

if (L->Count)
L->Count--;
};


void Init_Template_Spisok(Template_Spisok *L)
{
L->start = L->current = NULL;
L->Count = 0;
};

unsigned int Template_Spisok_Add(Template_Spisok *L, Template_Data *dt)
{
Template_Nod * p;

if (!(p = (Template_Nod *) malloc(sizeof(Template_Nod))))
return RES_FALSE;

p->data = *dt;
p->next = NULL;

if(!L->start)
L->start = L->current = p;
else
L->current = L->current->next = p;

L->Count++;

return RES_TRUE;
};

Template_Data * Template_Spisok_Get(Template_Spisok *L, unsigned int z)
{
unsigned int i;
Template_Nod * t;

t = L->start;

for(i=0;i<z;i++) {
if(t->next)
t = t->next;
else
return &(t->data);
}

return &(t->data);
};

void Template_Spisok_Delete(Template_Spisok *L,unsigned int z)
{
unsigned int i;
Template_Nod *t,*p;

if (L->Count == 0)
return;

if( z == 0 || L->Count == 1) {
p = L->start;
L->start = L->start->next;
free(p);
}
else {
t = L->start;

for (i=0;i<(z-1);i++)
if (t->next->next)
t = t->next;

p = t->next;

if (!t->next->next)
L->current = t;
t->next = t->next->next;

free(p);
}

if (L->Count)
L->Count--;
};

<<< cut end >>>

Пример работы со списком:

char * find_templ_decr(char * templ)
{

unsigned int i,k;
unsigned int find = 0;
char * result = NULL;
Spisok * Ls;
Data * Dt;
Template_Data * TMPDt;

for (i=0;i<TMPS.Count && !find;i++) {

TMPDt = Template_Spisok_Get(&TMPS,i);
Ls = TMPDt.List;
if (strcmp(Ls->Name, cfg_mode.type_os) == 0)

for (k=0;k<Ls->Count && !find;k++) {

Dt = Spisok_Get(Ls,k);

if (strcmp(Dt.templ, templ) == 0) {
result = (char *)strdup(Dt->descr);
find = 1;
goto end_search;
}
}
}

end_search:
return result;
};

<<< cut end >>>

Больше спасибо тому, кто взглянет на код, и выскажет свои мысли.
Ведь где-то там ошибка !

nial
()

__int_malloc - SIGSEGV

Форум — Development

Может кто-то сталкивался с проблемой: появляеться ошибка в __int_malloc (как говорит gdb).Есть намек на изменение глобальных переменных, которые использует malloc. При этом сопутствующие казусы просто великолепны: память больше не выделяеться на свободном месте, она выделяеться где попало. Причем после ее освобождения, старые "затертые" данные востанавливаються (используется calloc).

Эту ошибку вызывает функция, в которой почти нет указателей, а те что есть - безобидны. я их уже много раз проверял, они вроде бы в порядке.

Я вот на что намикаю: возможно есть какие нибудь "манипуляци" с обычными переменными, после которых malloc теряет голову.

Ошибка не обычна. Пишу программы уже довольно долго, но такого еще не видел. Код, если есть желающие, я могу выложить. Длина кода - около 400 строк, стиль написания - в лучших манерах. Если есть возможность у кого-то протестить код, ответьте, я его выложу.

ЗЫ: есть в С функции сравнения по шаблону ? perl не подходит. надо на С.

nial
()

как файл разбить на несколько частей ? очень срочно

Форум — Talks

как файл разбить на несколько частей ? очень срочно... FreeBSD

nial
()

как файл разбить на несколько частей

Форум — General

как файл разбить на несколько частей ? очень срочно... FreeBSD

nial
()

SIGSEGV скоро будет сниться

Форум — Development

ситуация типичная: пишется программа. как всегда SIGSEGV, но, вот показан кусок работы в gdb:

Breakpoint 2, template_procced (
str_start=0x8051f10 "Nov 10 16:46:11 proxima kernel: ipfw: 3100 Deny UDP 172.16.200.1:53 172.16.211.7:50105 in via rl0",
templ_start=0x8051ea8 "month date time host kernel/last prog/mess id/repeat
target/count proto/times src dst in via dev") at firewall.c:181
181 first_templ_word = (char *)get_before_slash(templ_word);
(gdb) s
get_before_slash (word=0x8051e78 "date") at string.c:226
226 char * result = NULL;
...
here goes code
...
260 if (find_slash == 0) {
(gdb)
261 result = (char *)safe_strdup(word);
(gdb) p word
$14 = 0x8051e78 "date"
(gdb) p calloc(5,1)
$15 = (void *) 0x8051e88
(gdb) p free(0x8051e88)
$16 = void
(gdb) s
safe_strdup (str=0x8051e78 "date") at string.c:355
355 char * result = NULL;
(gdb)
(gdb) p calloc(5,1)

Program received signal SIGSEGV, Segmentation fault.
0x400944c8 in _int_malloc () from /lib/libc.so.6
The program being debugged was signaled while in a function called from GDB.
GDB remains in the frame where the signal was received.
To change this behavior use "set unwindonsignal on"
Evaluation of the expression containing the function (calloc) will be abandoned.(gdb)

Сразу говорю, что вместо "(gdb) p calloc(5,1)" в проге стоит нормальное выделение памяти. тоже самое касаеться (gdb) p free(0x8051e88).


описание: до входа в функцию память освобождалась и выделялась нормально (пробовал много раз), но после - вы сами видете. В чем может быть причина этого ? я понимаю что это мой код что-то делает не так, но почему именно в такой форме все происходит ?

И еще один прикол из той же програмы:

Breakpoint 2, template_procced (
str_start=0x8051f10 "Nov 10 16:46:11 proxima kernel: ipfw: 3100 Deny UDP 172.16.200.1:53 172.16.211.7:50105 in via rl0",
templ_start=0x8051ea8 "month date time host kernel/last prog/mess id/repeat
target/count proto/times src dst in via dev") at firewall.c:181
181 first_templ_word = (char *)get_before_slash(templ_word);
(gdb) s
get_before_slash (word=0x8051e78 "date") at string.c:226
226 char * result = NULL;
(gdb) p word
$7 = 0x8051e78 "date"
(gdb) p calloc(5,1)
$8 = (void *) 0x8051e78
(gdb) p word
$9 = 0x8051e78 ""
(gdb) p free(0x8051e78)
$10 = void
(gdb) p word
$11 = 0x8051e78 "date"

описание: я выделяю память. Она выделяеться на уже выделеном участке (это первый глюк). calloc должен этот участок очистить. Но после освобождения памяти, прежние данные тоже остаються в порядке (второй).

ну просто пиздец какой-то.
Я не прошу писать мне сообщения типа: это у тебя ошибка в проге. Я это знаю.

Мне интересен другой вопрос, как calloc смог выделить память, очистить ее, а потом вернуть ее старое сдержимое на место. Или это gdb прикалывается, или это calloc не смог правильно сработать.

nial
()

glibc 2.3.2 - need error report

Форум — Development

Вот такая программа:

#include <stdio.h> #include <string.h>

int main() { FILE * file; char *str; char c; file = fopen("some_file","r"); str = (char*)calloc(sizeof(char),1); do { c = fgetc(file); sprintf(str,"%s%c",str,c); } while (c != '\n' && c != EOF); printf("\n String: %s",str); fclose(file); return 0; }

some_file - любой текстовый файл. она вызывает Segmentation Fault в системе Slackware 9.1 на строке fclose(file); Дистр поставлен, и напильником не обработан. gdb говорит что ошибка в glibc.so.6 (стоит 2.3.2)

Это вина девелопера glibc ? проверте ее на 9.1 - как у других бутет ли работать. Если ошибка - оправте отчет про ошибку.

nial
()

Как слить Си++ прогу с Сишной библиотекой?

Форум — Development

Какие влаги надо указать ld чтоб он слил С++ прогу с С ишной библиотекой?

g++ -c main.cpp ld main.o -lsmbclient -lc

так вот ту чего-то не хватает. Помоготе плиз.

nial
()

Когда этот кошмар кончиться...

Форум — Admin

Вопрос про iptables и самбу: когда smbclient начинает работать, ему выдаеться порт > 1024. Дальше он коннектится к другой самбе, и другая принимает сообщения с начала на 137(9) порт, но ведь потом другая переводит разговор на другой порт, тоже > 1024. И тут загвоздка - как правильно настроить iptables, чтоб самба работала. Ведь не известно на каких портах она будет работать.

Может решение в том, что б smbclient заставить работать на конкретном диапазоне портов ? (Жаль динамических правил нету)

Спасибо за помощь.

nial
()

Dynamic iptables

Форум — Security

Можно ли создавать динамические правила в ядрах 2.4 используя iptables наподобие динамических правил во FreeBSD ?

nial
()

RSS подписка на новые темы