LINUX.ORG.RU
 

Предотвращение race conditions


0

0

Хорошая статья о том как можно использовать race conditions для того, чтобы ронять чужие серверы, а также о том, как правильно программировать, чтобы race conditions не возникали (т.е. улучшать безопасность системы).

>>> Подробности


[#]  
eXOR

Re: Предотвращение race conditions

огромное спасибо. классная статья.

***** ()
[#]  
chucha

Re: Предотвращение race conditions

>использовать race conditions для того, чтобы ронять чужие серверы

IMHO, ударом с ноги его уронить удобнее.

***# ()
[#] Ответ на: Re: Предотвращение race conditions от chucha 11.10.2004 20:40:25  

Re: Re: Предотвращение race conditions

Поддерживаю - положить рейсом это сложно - факт! Его и на собственном-то коде повторить сложно а на чужом....

anonymous ()
[#]  
Shaman007

Re: Предотвращение race conditions

[shaman@shaman007 shaman]$ gcc test.c test.c: In function `main': test.c:13: warning: assignment makes pointer from integer without a cast /tmp/ccmD8oqV.o(.text+0x1b): In function `main': : warning: the use of `tempnam' is dangerous, better use `mkstemp' [shaman@shaman007 shaman]$

Нда, а они вот тут пишут:

You could try to use mkdtemp(3), but this is generally a bad idea because temp cleaners may decide to erase them.

***** ()
[#] Ответ на: Re: Предотвращение race conditions от Shaman007 11.10.2004 20:59:44  
Shaman007

Re: Re: Предотвращение race conditions

И при ими рекомендуемом коде мусор остается... Короче, чем плох mktemp()?

***** ()
[#] Ответ на: Re: Re: Предотвращение race conditions от Shaman007 11.10.2004 21:01:59  
baka-kun

Re: Re: Re: Предотвращение race conditions

> Короче, чем плох mktemp()?

Тем, что между получением имени и созданием файла возникает race. Поэтому использовать надо mkstemp и mkdtemp.

**** ()
[#] Ответ на: Re: Re: Re: Re: Предотвращение race conditions от Shaman007 11.10.2004 21:35:42  
baka-kun

Re: Re: Re: Re: Re: Предотвращение race conditions

> Ну да, я в плане того, зачем городить огород, описанный в статье?

С циклом? Так это реализация mkstemp, если не доверяешь системной ;)

**** ()
[#]  

Re: Предотвращение race conditions

Статья интересная, только в конце что-то странное написано:

Programs can register to handle various kinds of signals, but signals can happen at the most inopportune times, including while you're already handling another signal.

Похоже, товарищ не знает о существовании sa_mask в struct sigaction.
Или я чего упустил?

anonymous ()
[#] Ответ на: Re: Предотвращение race conditions от anonymous 11.10.2004 23:07:15  

Re: Re: Re: Re: Re: Re: Re: Модерам дали по медальке, а остальным - золотое кольцо в нос?

>Статья интересная, только в конце что-то странное написано:

>Programs can register to handle various kinds of signals, but signals can happen at the most inopportune times, including while you're already handling another signal.

>Похоже, товарищ не знает о существовании sa_mask в struct sigaction. Или я чего упустил?

Товарисч имел ввиду вот эту статью

http://www.netsys.com/library/papers/signals.txt

***** ()
[#]  
atrus

Re: Предотвращение race conditions

Тогда кто-нибудь может сказать: а как создавать безопасно временные файлы из шела? Добавлять к имени ещё случайное число? Или и этого мало?

***** ()
[#] Ответ на: Re: Предотвращение race conditions от atrus 12.10.2004 0:05:25  
Cosmicman

Re: Re: Предотвращение race conditions

лучше поставить патч типа openwall или grsecurity, включить "Linking restrictions" и спать спокойно :)

** ()
[#] Ответ на: Re: Re: Предотвращение race conditions от Cosmicman 12.10.2004 0:26:32  
Cosmicman

Re: Re: Re: Предотвращение race conditions

да,если у вас freebsd то можно также смонтировать /tmp с опцией nosymfollow

** ()
[#]  
jackill

Re: Предотвращение race conditions

По-русски race condition называется "состояние гонки" или "условие гонки". Давайте не будем делать разноязычную мешанину в новостях.

***** ()
[#] Ответ на: Re: Предотвращение race conditions от jackill 12.10.2004 1:03:16  

Re: Re: Предотвращение race conditions

> По-русски race condition называется "состояние гонки" или "условие гонки". Давайте не будем делать разноязычную мешанину в новостях.

не согласен:

``race condition'' -- это TERM

"состояние гонки" или "условие гонки" -- чёрти что и с боку бантик, и не понятно о чём вообще речь идёт

anonymous ()
[#] Ответ на: Re: Предотвращение race conditions от jackill 12.10.2004 1:03:16  

Re: Re: Предотвращение race conditions

> По-русски race condition называется "состояние гонки" или "условие гонки".

Только у плохих переводчиков.

anonymous ()
[#] Ответ на: Re: Предотвращение race conditions от jackill 12.10.2004 1:03:16  

Re: Re: Предотвращение race conditions

> По-русски race condition называется "состояние гонки" или "условие гонки". Давайте не будем делать разноязычную мешанину в новостях.

Это ты просто теорию операционных систем не учил. Race condition это race condition и есть.

* ()
[#] Ответ на: Re: Re: Re: Предотвращение race conditions от Cosmicman 12.10.2004 0:48:45  

Re: Re: Re: Re: Предотвращение race conditions

А если у вас линукс то можно также смонтировать /tmp на FAT. Казалосьбы причем здесь BSD?

anonymous ()
[#] Ответ на: Re: Re: Предотвращение race conditions от anonymous 12.10.2004 1:49:42  
mumpster

Re: Re: Re: Предотвращение race conditions

> Только у плохих переводчиков.
у хороших оно называется просто "гонки"

***** ()
[#] Ответ на: Re: Re: Предотвращение race conditions от anonymous 12.10.2004 1:34:06  
jackill

Re: Re: Re: Предотвращение race conditions

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

***** ()
[#] Ответ на: Re: Re: Re: Предотвращение race conditions от jackill 12.10.2004 10:26:33  

Re: Re: Re: Re: Предотвращение race conditions

> В переводной литературе так.

В какой нах переводной литературе? Сколько ты видел таких переводов и
кто их переводил? "Один идиот написал" == "вся переводная литература"?
Так такие же горе-переводчики создают шедевры типа автобусных ошибок.

** ()
[#] Ответ на: Re: Re: Re: Re: Предотвращение race conditions от annonymous 12.10.2004 11:35:40  

Re: Re: Re: Re: Re: Предотвращение race conditions

аномальное поведение из-за неожиданной критической зависимости от относительного времени выбора событий. так нормально?

anonymous ()
[#] Ответ на: Re: Re: Re: Re: Re: Предотвращение race conditions от anonymous 12.10.2004 12:12:17  

Re: Re: Re: Re: Re: Re: Предотвращение race conditions

Я бы предложил такой перевод (если он вообще кому-то нужен):
"Несогласованный конкурентный доступ к ресурсам". Просто и ясно.
Но длинно. Однако, если учесть тот факт, что русские слова и фразы
как правило заметно длиннее английский аналогов, то жить с этим можно.

** ()
[#] Ответ на: Re: Предотвращение race conditions от atrus 12.10.2004 0:05:25  
ananas

Re: Re: Предотвращение race conditions

> как создавать безопасно временные файлы из шела?

man mktemp

***** ()
[#] Ответ на: Re: Re: Re: Re: Re: Re: Предотвращение race conditions от annonymous 12.10.2004 12:24:13  

Re: Re: Re: Re: Re: Re: Re: Предотвращение race conditions

Я всегда думал, что race condition на русский переводится как "эффект гонки" и, что это вполне устоявшийся перевод.

anonymous ()
[#] Ответ на: Re: Re: Предотвращение race conditions от ananas 12.10.2004 12:39:22  
atrus

Re: Re: Re: Предотвращение race conditions

> man mktemp

tnx, я когда читал, почему-то подумал, что это тоже функция сишная... ;-)))

***** ()
[#] Ответ на: Re: Re: Re: Re: Re: Предотвращение race conditions от anonymous 12.10.2004 12:12:17  
jackill

Re: Re: Re: Re: Re: Re: Предотвращение race conditions

Что-то типа того.

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

***** ()
[#] Ответ на: Re: Re: Re: Re: Re: Re: Предотвращение race conditions от jackill 12.10.2004 15:17:00  
jackill

Re: Re: Re: Re: Re: Re: Re: Предотвращение race conditions

Забыл. Естественно, что каждый раз писать определение вместо двух слов нехорошо.

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

P.S. Американизмы нужно применять к месту, а не совать во все дыры.

***** ()
[#] Ответ на: Re: Re: Re: Re: Re: Re: Re: Предотвращение race conditions от jackill 12.10.2004 15:19:41  

Re: Re: Re: Re: Re: Re: Re: Re: Предотвращение race conditions

Наверное гонки, не потому, что кто-то кого-то обгоняет, а потому, что правильность работы программы зависит от того, успела или нет она проскочить ничем незащищенный критический участок.

anonymous ()
[#] Ответ на: Re: Re: Re: Re: Re: Re: Re: Re: Предотвращение race conditions от anonymous 12.10.2004 15:50:14  
baka-kun

Re: Re: Re: Re: Re: Re: Re: Re: Re: Предотвращение race conditions

> правильность работы программы зависит от того, успела или нет она проскочить ничем незащищенный критический участок.

Именно.

А в шельниках для предотвращения race всю жизнь применяли `mkdir -p 700`.

**** ()
[#] Ответ на: Re: Re: Re: Re: Re: Re: Re: Re: Предотвращение race conditions от anonymous 12.10.2004 15:50:14  

Re: Re: Re: Re: Re: Re: Re: Re: Re: Предотвращение race conditions

> Наверное гонки, не потому, что кто-то кого-то обгоняет, а потому

Ну, правильно, давайте теперь подгонять решение под неправильный ответ,
то есть, смысл под неверный перевод. "Эффект гонки" или "состояние
гонки" - это дебильная калька с английского, тупой дословный перевод,
не имеющий смысла в данном контексте с точки зрения русскоязычного
читателя. Может хватит уже выгораживать и оправдывать непрофессиональные
переводы терминов?

** ()
[#] Ответ на: Re: Re: Re: Re: Re: Re: Re: Re: Re: Предотвращение race conditions от annonymous 12.10.2004 18:23:24  
jackill

Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Предотвращение race conditions

Тупой или не тупой - смысл понятен практически сразу. А понятен ли смысл рэйс, если еще учесть, что часть будут произносить как рейс, который сам по себе наличествует в русском языке?

P.S. А потом приходишь и тебя начинают лечить -
мы разрабатываем полиси (требования)
вы делегируете нам полномочия (дать права/назначить временным помощником)
девельный отдел

***** ()
[#] Ответ на: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Предотвращение race conditions от jackill 12.10.2004 19:42:48  

Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Предотвращение race conditions

> рэйс, если еще учесть, что часть будут произносить как рейс,

А это разные рейсы или таки один и тот же, но контекстно-зависимый?

anonymous ()

Re: Re: Re: Re: Re: Re: Re: Re: Модерам дали по медальке, а остальным - золотое кольцо в нос?

>> Похоже, товарищ не знает о существовании sa_mask в struct sigaction.
> Товарисч имел ввиду вот эту статью
Нет, не имел. В "этой статье" речь о том, что нельзя некоторые
функции из обработчика сигнала вызывать - это и так всем известно,
и на эту статью он ссылается в другом месте.
А в том тексте, что я процитировал, он говорит, что сигнал может
неожиданно прийти, даже когда ты обрабатываешь другой сигнал.
Я с этим не согласен. Для этого есть sa_mask, и он отлично
работает.

anonymous ()
[#] Ответ на: Re: Предотвращение race conditions от jackill 12.10.2004 1:03:16  

Re: Re: Предотвращение race conditions

>По-русски race condition называется "состояние гонки" или "условие гонки". Давайте не будем делать разноязычную мешанину в новостях.

Не. Я не знаю, кто у вас на ЭКТ преподавал схемотехнику (и была ли такая), но у нас это называлось просто "гонки". Без "состояние" и "условие". Однако я более склоняюсь в тому, что высказано товарищами выше: "race condition" - действительно устоявшийся термин, причём _сразу_ понятно, о чём речь, в отличие от "гонок".

К слову: "Всплеск" вон тоже красивый термины, а "вейвлет" изжить всё-равно не может.

//Loseki

anonymous ()

Предотвращение race conditions

> А в том тексте, что я процитировал, он говорит, что сигнал может неожиданно прийти, даже когда ты обрабатываешь другой сигнал. Я с этим не согласен. Для этого есть sa_mask, и он отлично работает.

Сигналы, генерируемые синхронно в ответ на события в коде (доступ в незамапленую память => SIGSEGV, неизвестная команда => SIGILL, и так далее) не маскируются независимо от sa_mask. (А если будут маскироваться - это будет только хуже для платформы)

Так что нужно и это учитывать.

* ()
[#] Ответ на: Re: Re: Предотвращение race conditions от anonymous 12.10.2004 23:11:03  

Предотвращение race conditions

> Не. Я не знаю, кто у вас на ЭКТ преподавал схемотехнику (и была ли такая), но у нас это называлось просто "гонки". Без "состояние" и "условие". Однако я более склоняюсь в тому, что высказано товарищами выше: "race condition" - действительно устоявшийся термин, причём _сразу_ понятно, о чём речь, в отличие от "гонок".

Всё-таки надо принципиально различать race (то есть уже состоявшееся нарушение ожидаемого хода событий) и race condition (возможность такого нарушения). В исследовании таких ситуаций это различие существенно.

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

* ()
[#] Ответ на: Re: Re: Re: Re: Re: Re: Re: Re: Re: Предотвращение race conditions от baka-kun 12.10.2004 17:32:29  

Предотвращение race conditions

> А в шельниках для предотвращения race всю жизнь применяли `mkdir -p 700`.

Это используется не только в шеллах (например, в CVS), но это дороговато.

В современных системах O_NOFOLLOW+O_CREAT+O_EXCL достаточен для локальных FS. Для удалённых - да, mkdir - метод убойный, но работающий. Впрочем, для критических применений всё равно используют отдельные каталоги временных файлов, без o+w.

* ()
[#] Ответ на: Re: Re: Re: Re: Re: Re: Re: Re: Re: Предотвращение race conditions от annonymous 12.10.2004 18:23:24  

Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Предотвращение race conditions

А что ты предлогаешь? "Несогласованный конкурентный доступ к ресурсам"? Так это уже не термин, а определение, при том еще и неполное (race conditions могут возникать не только при конкурентном доступе).

anonymous ()
[#] Ответ на: Re: Re: Предотвращение race conditions от anonymous 12.10.2004 23:11:03  

Re: Re: Re: Предотвращение race conditions

Когда ты встретишь термин "функция расстановки", тоже будет непонятно о чем речь?

anonymous ()
[#] Ответ на: Предотвращение race conditions от netch 12.10.2004 23:14:16  

Re: Предотвращение race conditions

А если так? Race --- эффект гонки, race condition --- состояние гонки.

anonymous ()
[#] Ответ на: Re: Предотвращение race conditions от chucha 11.10.2004 20:40:25  

Re: Re: Предотвращение race conditions

> IMHO, ударом с ноги его уронить удобнее.

А если он в стойке ? Наскока я это дело рублю человеческой ногой стойку свалить невозможно. А слона в серверную не затащишь.

anonymous ()