Есть ли оболочка, которая предотвратит прослушивание порта исполняемым файлом? В качестве альтернативы, существует оболочка, которая переназначает порт, чтобы исполняемый файл думал, что он прослушивает 80, но на самом деле прослушивает 8080
Командная строка моей мечты была бы такой:
server:~ # remapper -f 80 -t 8080 /usr/bin/some_binary
Создание политики обязательного контроллера доступа в SELinux, AppArmor (или, как я полагаю, доверенных расширениях Solaris) - единственный реальный способ гарантировать, что приложениям не разрешено связываться с портами, которые явно не указаны в политике. Если вы хотите сопоставить один порт с другим портом для входящих подключений, это делается на уровне системного брандмауэра / фильтра пакетов - iptables в Linux, ipf в Solaris и т. Д.
Однако вопрос Бенуа остается в силе, и то, что вы пытаетесь сделать, может оказаться излишним.
Вы запускаете веб-сервер на порту 80, который может выполнять только определенные типы скриптов. Затем вы можете разрешить пользователям загружать на веб-сервер и выполнять свой сценарий через веб-браузер, тем самым заставляя доступ к нему только через http. Просто мысль.
Например, выполните это из cgi-bin:
#!/bin/bash
# get today's date
OUTPUT="$(date)"
# You must add following two lines before
# outputting data to the web browser from shell
# script
echo "Content-type: text/html"
echo ""
echo "<html><head><title>Demo</title></head><body>"
echo "Today is $OUTPUT <br>"
echo "Current directory is $(pwd) <br>"
echo "Shell Script name is $0"
echo "</body></html>"