Привязка сокета портировать 80 в ansi c

Вы уверены, что mysqldump установлен локально ?

Я объясню - Runtime.getRuntime().exec работает на вашем локальном компьютере. Это означает, что весь код, выполняемый внутри него, будет работать на вашем компьютере , а не на любом удаленном сайте, к которому вы подключаетесь. Так что это означает, что каждый исполняемый здесь двоичный файл должен быть установлен на машине, на которой выполняется код, и именно поэтому вы получили эту ошибку.

8
задан Nino 3 October 2008 в 22:21
поделиться

9 ответов

Обычно только суперпользователь (корень) может связать с 'привилегированными' портами (т.е. те номера портов ниже 1024).

Это означает, что или необходимо запустить программу как корень или сделать исполняемый файл 'suid корнем'.

Оба из них имеют последствия безопасности, таким образом, можно хотеть рассмотреть использование подхода suid и отказа от полномочий суперпользователя, после того как связывать вызов был выполнен.

17
ответ дан 5 December 2019 в 08:01
поделиться

Вы найдете это учебное руководство очень полезным на сетевом программировании с C/C++.

И, между прочим, ANSI C не имеет никакого способа получить доступ к сети. Это - предоставленные библиотеки ОС (BSD снабжают сокетом API, также портированный к Windows как winsock) это обеспечивает эту возможность.

4
ответ дан 5 December 2019 в 08:01
поделиться

Если Вы находитесь в общей системе (как университетский компьютер) и не базируетесь затем нет никакого 'легкого' способа получить то разрешение дизайном.

0
ответ дан 5 December 2019 в 08:01
поделиться

Порты 1024 и ниже называют Привилегированными Портами, связывание с этими портами требует поднятого разрешения.

Порты выше 1024 называют Портами Emphemeral. Привязка к ним не требует никаких специальных полномочий.

Самым легким способом получить доступ к privilged портам состоит в том, чтобы быть пользователь root.

3
ответ дан 5 December 2019 в 08:01
поделиться

Ответ S.Lott, возможно, инициировал очень отрицательные реакции, но его идея совсем не глупа: если исходный вопрос для реальной программы (не школьное присвоение), разрабатывая его, как приложение позади сервера HTTP часто является разумным выбором. Тем путем можно оставить много деталей низкого уровня к хорошей и хорошо отлаженной программе, Apache.

Приложением не должен быть CGI, это может быть модуль Apache. Apache, от версии 2, больше не является просто сервером HTTP. Это - теперь платформа для разработки сетевых программ. Запись модуля Apache может быть корректным ответом на исходный вопрос (см. документацию Apache),

0
ответ дан 5 December 2019 в 08:01
поделиться

Это - как @Charles Bailey выражается..., и я хотел бы добавить, что это - то, почему один раньше видел http адреса сервера на 8 080 спецификацией порта в URL как http://some.url:8080/

0
ответ дан 5 December 2019 в 08:01
поделиться

Традиционно только корень может связать сокеты с портами под 1 024.

0
ответ дан 5 December 2019 в 08:01
поделиться

Нормальные программы не могут связать "привилегированные" порты - те, которые ниже 1024. Это - главным образом устаревшее средство защиты подобных UNIX операционных систем.

При выполнении, поскольку суперпользователь, хотя предложили многие другие сюда, является плохим решением этой проблемы. Если Вы работаете на Debian или системе Ubuntu, я предлагаю установить authbind пакет, который позволит Вам давать свое разрешение программы открывать привилегированные порты, на самом деле не имея необходимость дать Вашей программе любые другие специальные полномочия.

Если Вы работаете на какой-либо другой системе, я предлагаю установить debian или ubuntu ;-)

0
ответ дан 5 December 2019 в 08:01
поделиться

Да, можно легко связать для портирования 80. Используйте Apache. Запишите веб-приложение. Apache связывает для портирования 80 и запускает веб-приложение.

Вы пытаетесь записать следующий Apache? Если так, необходимо будет узнать о setuid вызове API в операционной системе.

Если Вы не пишете новую версию Apache, большинство людей использует непривилегированный порт. 8000 популярно, 8080 - также.

-3
ответ дан 5 December 2019 в 08:01
поделиться
Другие вопросы по тегам:

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