k001
k001
:...

April 2032
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

k001 [userpic]
РусКрипто

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

Засада в том, что там на два часа пять докладов, а то, что я анонсировал и приготовил, меньше чем за полчаса не расскажешь. Придётся слушателям выбирать -- либо про OpenVZ, либо про управление ресурсами и эксплойты.

Кстати, об эксплойтах. Никогда не запускайте следующий страшный и вредоносный код на Си продакшен машине -- всё умрёт! А в контейнере -- сколько угодно. Я предупредил.

while (1) {
	mkdir("somedir", S_IRWXU);
	chdir("somedir");
}

Tags: , ,
Comments

Блин, так и подмывает запустить :))))
А контейнер как спасется от такой рекурсии?

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

В деталях, наверное, потом отдельным постом напишу.

Скажи, а разве размер на стек или смегмент данных не спасет?

> размер на стек

А где тут на стеке память выделяется? Стек практически не используется тут.

> или смегмент данных

Собственно, как и со стеком — нет тут никаких выделений памяти процессу…

судя по отсутствия мата в комментах, у себя ещё никто не запустил… :)

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

> Мне кажется, эта штука должна упереться
> в ограничение длины имени файла

Дык, имя-то короткое, ибо относительное. Длинное имя мы нигде не используем.

проблема в том, что в современных юниксах нет лимита на длину пути. Т.е. программа сможет работать вечно ;)

квота на диск спасёт (особенно если не полениться выставить квоту на иноды)

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

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

И какой же это эксплойт? Скорее ты показал людям что есть пистолет, и что его можно направить в ногу :)

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

FreeBSD RELENG_7/ufs - ничего критичного, машина жива, через какое-то время оно перестанет жрать диск (когда квота кончится) и станет только процессор. Была бы процессорная квота - умерло бы по ней.

> через какое-то время оно перестанет жрать диск (когда квота кончится)
> и станет только процессор.

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

Как оно там на freebsd себя ведёт, не знаю, но линуксу плохо. Завтра расскажу, почему и что там происходит.

Количество памяти тут не играет роли. Имеет значение лишь файловая система, точнее - сколь много файлов на ней можно создать.

Товарищ Серафим прав, однако ж, завтра, всё завтра расскажу. Сегодня просто попробуйте это на тестовой машинке.

Ты знал, ты знал... Придётся заскринить пока, а то у меня там типа викторина.