Пассажир - “Автоуничтожает” процессы жулика?

Другое решение состоит в том, чтобы сделать Ваше приложение setuid так, чтобы оно могло связать с портом 80. Как корень, сделайте следующее

chown root ./myapp
chmod +S ./myapp

Следует иметь в виду, что выполнение этого, если оно не сделано абсолютно правильное, подвергнет Вас потенциальным дырам в системе безопасности, потому что Ваше приложение будет говорить с сетью и будет работать с полным корнем priviledges. При взятии этого решения необходимо посмотреть на исходный код для Apache или Lighttpd или чего-то подобного, где они используют полномочия пользователя root открыть порт, но затем сразу бросить те privs и "стать" более низким привилегированным пользователем так, чтобы угонщик не мог принять целый компьютер.

Обновление: Как замечено в этом вопросе, кажется, что ядра Linux с тех пор 2.6.24 имеют новую возможность, которые позволяют Вам отмечать исполняемый файл (но не сценарий, конечно) как наличие"CAP_NET_BIND_SERVICE"возможность. При установке debian пакета "libcap2-мусорное-ведро" можно сделать это путем выдачи команды

setcap 'cap_net_bind_service=+ep' /path/to/program

2
задан 15 June 2011 в 17:05
1 ответ

ulimits (настроенный через/etc/security/limits.conf, или только путем выполнения ulimit прежде execing потенциально нарушающий двоичный файл) являются, вероятно, решением этого.

0
ответ дан 3 December 2019 в 15:56

Теги

Похожие вопросы