| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Программирование под Unix/Linux > libiptc и non-root пользователи |
| Автор: AmsTaFF 25.1.2012, 10:00 |
| такая проблема, процесс крутится под именем www-data( веб-сервер), в нем создаю кусок, который бы создавал правило в netfilter, которое бы банило тех, кто может оказаться ботом. НО при попытке инициировать работу с нетфильтром, происходит ошибка, её описание заключается в том, что для работы нужен root пользователь. Есть ли возможность как-то обойти это безопасными путями? Не меняя пользователя с www-data на root. Вариант с созданием внешнего процесса возможен, но затребует дополнительных затрат времени. |
| Автор: svlary 25.1.2012, 17:30 |
Две возможные причины :
Уточните постановку задачи... |
| Автор: tzirechnoy 25.1.2012, 18:47 |
| Самое вменяемое, на мой взгляд -- создать демона, например, на unix-domain socket, который бы работал от рута, и позволял бы, если его открыли от www-data, вызывать /sbin/iptables с указанными параметрами. Хотя есть варианты и sudo настроить на возможность вызова, конечно. И дажэ попытаться как-то через capabilities дать этому процэссу CAP_NET_ADMIN. |
| Автор: Fynivx 27.1.2012, 05:21 |
| А не вариант, например, запустить от рута, а после проведения нужных операций - setuid( int uid ), setgid( int gid )? Это стандартные POSIX функции. А если открыть сокет сервака, а потом вообще на нободи переключиться - уж очень искусным хакером нужно будет быть, чтобы подходящий шеллкод написать. man setuid man setgid |
| Автор: AmsTaFF 29.1.2012, 14:43 |
| пробоавл setuid, не помогло, возвращает ошибку. придется делать демона, надеялся что обойдется "малой кровью".... |
| Автор: shara 10.5.2012, 15:03 |
| лучше поздно чем никогда может http://ru.wikipedia.org/wiki/SELinux поможет решить проблему? |