Сейчас начал заниматься написанием проекта, который использует локальную сеть. Тестирую программу на Windows 10 и openSUSE Tumbleweed. Если в Windows брандмауэр спрашивает разрешение на открытие порта, то в openSUSE ничего не происходит, порт так и остаётся закрытым и на него ничего приходит. Для открытия портов вручную нужен root. Как же тогда работает другой сетевой софт?
надо отделить мух от котлет. есть само открытие порта, а есть разрешение входящего трафика по порту в файерволе. с файерволом работаете через iptables (вернее, работает пользователь софта), в софте открываете порт силами библиотек ЯП, которым пользуетесь.
Вообще-то, в Windows для изменения настроек брандмауэра тоже необходимы права администратора. Попробуйте запустить своё приложение под пользователем, входящим только в группу "Пользователи", когда нужный порт ещё не открыт.
Любой софт который открывает порты может это сделать только из под учетки sudo, если это нет так то вам вручную надо открыть порт в iptables или его надстройке.
Не совсем правда. Любой софт, которому нужно открыть один из привелегированных портов (до 1024), требует прав рута, если номер порта выше, то права рута не требуются. А iptables да, можно либо от рута, либо через sudo