Intereting Posts
Оптимальный способ установки и чтения переменных Сопоставление слов, содержащих символы за пределами a-zA-Z NetBSD предоставляет цифровые подписи для официальных образов ISO и бинарных пакетов? Как перечислить все файлы, используемые при загрузке Linux Что такое эквивалент yum 'apt-get update'? Фиксирование Lilo с системой uuefi и отсутствие оптического привода Где смонтировать все флэш-накопители USB? Печать строки с заданным смещением в файле Почему tar-архивные форматы переключаются на сжатие xz для замены bzip2 и что с gzip? Где происходит ожидание сети в верхней части? конвертировать шестнадцатеричные в двоичные Файловая система Docker не имеет открытых файлов, но не может размонтировать Разве bash делает терминал переводит новую строку (\ n) на возврат каретки (\ r)? Как перечислить все дескрипторы окна Wine, принадлежащие выбранному окну PID? git diff копий, которые добавили только строки

Как выполнить cgi, на который указывает символическая ссылка?

На моем веб-сайте есть несколько cgi (исполняемых двоичных файлов, скомпилированных из исходного кода C , если это имеет значение), которые отлично работают при запуске из браузера, как, например,
http://mydomain.com/cgi-bin/myprog.cgi
Но если я добавлю символическую ссылку на myprog.cgi в cgi-bin / like
cd cgi-bin /
ln -s myprog.cgi proglink.cgi
затем пытается бежать
http://mydomain.com/cgi-bin/proglink.cgi
из браузера выдает ошибку 500.

Мой .htaccess имеет
AddHandler cgi-скрипт .cgi
Опции + ExecCGI + FollowSymLinks -Indexes
(и я также попробовал + SymLinksIfOwnerMatch, как с + FollowSymLinks, так и без него), но это, похоже, не работает.

Редактировать Я должен упомянуть (благодаря предложению @ slm в комментариях ниже), что на сайте уже есть символические ссылки на скрипты .php, которые прекрасно работали в течение многих лет. (Эти php-скрипты делают $ _SERVER [‘PHP_SELF’], возвращая имя символической ссылки, и все это работает без проблем.) Но теперь символическая ссылка на исполняемый образ .cgi перестает работать, как описано выше.
Я, вероятно, также должен упомянуть, что этот сайт находится на общем хосте (дешевый общий хостинг dreamhost.com).

Похоже, что поиск в этой проблеме подсказывает, что ничего не будет работать, и что Apache просто не будет выполнять cgi, на который указывает символическая ссылка. Правильно ли это гуглить или есть какой-нибудь способ запустить cgi по символической ссылке? Если это правильно, и я не могу сделать это никоим образом / нет, позвольте мне описать ниже, почему я хочу это сделать, и тогда, надеюсь, вы можете предложить альтернативную страtagsю, которая работает и которая выполняет ту же общую цель. ..


… Так вот тут и появляется тег безопасности ниже. Некоторые из этих cgi были целью ddos-атак на мой сайт (хотя Бог знает, а может и нет), почему кто-то будет беспокоиться о моем сайте, который имеет абсолютно ничего не имеет значения). Поэтому я добавил некоторый код в каждый cgi (почти одинаковый код для каждого), чтобы проверить его? Query_string и присвоить ему оценку «вероятность атаки». С небольшой оценкой cgi просто игнорирует запрос, а с большей оценкой ipaddr = getenv («REMOTE_ADDR») пользователя автоматически добавляется в .htaccess с «deny from». А также различные промежуточные действия, такие как отправка мне по электронной почте информации о ситуации.

Так что это стало много строк кода. И вместо того, чтобы индивидуально компилировать его в каждый CGI, я хотел (и все еще хочу) написать внешний запрос-валидацию, который делает это раз и навсегда. Затем, если все в порядке, он запускает вызов system () для запуска запрошенного cgi. Поэтому я написал небольшую небольшую тестовую программу, которая просто косвенно запускает cgi с помощью вызова system (), и это действительно работает нормально.

Теперь возникает проблема с символьными ссылками, потому что в общем случае этот интерфейс должен иметь возможность запускать много разных cgi и, следовательно, должен знать, какой cgi нужно запустить. И путем символической ссылки каждого имени CGI на этот интерфейсный CGI он может проанализировать getenv («SCRIPT_NAME»), который даст ему имя символической ссылки, тем самым идентифицируя конкретный CGI, выдавший запрос. Вроде как php $ _SERVER [‘PHP_SELF’]. Таким образом, символические ссылки кажутся самым приятным и простым решением. Но если это невозможно с apache / .htaccess, то можете ли вы предложить какой-то другой метод для достижения той же цели?