| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Программирование под Unix/Linux > как избавится от clone() ? |
| Автор: boostcoder 22.9.2010, 21:07 |
| есть необходимость, некоторому пользователю запретить сисколы system(), fork(), exec*(). при помощи http://en.wikipedia.org/wiki/Systrace это все реализовал. но проблема в том, что юзеру нужна возможность создавать потоки, а они тоже создаются при помощи clone(). вопрос в том, каким образом это можно преодолеть? либо какой-то патчь, который позволит создавать потоки не прибегая к clone(), либо еще что-то в этом роде, либо хак ядра. в общем, подскажите как можно решить проблему? всем сильно благодарен. |
| Автор: MAKCim 22.9.2010, 22:41 |
| boostcoder, пропатчить systrace ;) если clone_flags & CLONE_THREAD то разрешаем clone(), если он был запрещен |
| Автор: boostcoder 22.9.2010, 22:49 |
| спасибо. попробую |
| Автор: MAKCim 22.9.2010, 22:53 |
| patch |
| Автор: boostcoder 22.9.2010, 23:15 |
| MAKCim, ну просто мегаблагодарен! это вами написанный патч? |
| Автор: MAKCim 22.9.2010, 23:21 |
| boostcoder, да признаюсь, раньше не слышал про systrace решил заодно посмотреть, что за зверь если патч и не рабочий, то саму идею из него понять можно и в случае чего изменить нужным образом |
| Автор: boostcoder 22.9.2010, 23:24 |
| понятно. низко приклоняюсь еще раз спасибо. Добавлено через 3 минуты и 50 секунд проверить смогу завтра. тогда тему закрою, если вопросов нубских не возникнет |
| Автор: MAKCim 22.9.2010, 23:33 |
| patch fix |
| Автор: boostcoder 22.9.2010, 23:39 |
| еще раз благодарю. |
| Автор: boostcoder 27.9.2010, 17:17 | ||
| в общем, пропатчил. собрал. теперь, при попытке создать поток, функция pthread_create() возвращает "0", а поток не создается. при том, errno == 0. мыслей ноль :( проверочный код:
|
| Автор: MAKCim 28.9.2010, 17:27 |
| значит нужно более детально вникать в суть работы systrace попытайся сам ;) у меня пока нет времени |