Почему первые 1 024 порта ограничиваются пользователем root только?

Две вещи я рекомендовал бы:

В масштабе всей системы: использование убирает и устанавливает под/usr/local/stow/package-version. Затем можно легко переключиться между версией.

В моем доме, или если у меня нет полномочий записи/usr/local, я лично устанавливаю программы под ~/.local, которому подсказывает стандарт XDG.

Можно также использовать, убирают локально, хотя я никогда не делал :)

53
13.07.2011, 03:42
1 ответ

Предположим, что Вы обмениваетесь данными с компьютером на порте <1024, и Вы знаете, что компьютер выполняет некоторый вариант Unix. Затем Вы знаете, что сервис, работающий на том порте, утвержден системным администратором: это работает как корень или по крайней мере должно было быть запущено как корень.

На широком, диком мире Интернета это не имеет значения. Большинство серверов администрируемо теми же людьми как сервисы, работающие на них; Вы не доверяли бы корням больше, чем другие пользователи.

С многопользовательскими машинами, особенно в локальной сети, это может иметь значение. Например, в дни перед гражданской криптографией, популярный метод рабочих команд оболочки на другой машине был rsh (удаленная оболочка); Вы могли использовать аутентификацию по паролю, или Вы могли пройти проверку подлинности только путем доказательства, что Вы были пользователем X на машине (с машиной B знающий, что X@A мог войти в систему как X@B без пароля). Как доказать это? rsh клиент является корнем setuid и использует номер порта <1024, таким образом, сервер знает, что клиент, с которым он говорит, защищен и не будет лгать, относительно которого пользователь на A вызывает его. Так же NFS был разработан, чтобы быть прозрачным относительно пользователей и полномочий, таким образом, общая конфигурация была то, что в локальной сети каждая машина использовала ту же пользовательскую базу данных и пользователя N в, монтирующиеся файловые системы с сервера B получат полномочия пользователя N в B. Снова, то, что клиент NFS происходит из номера порта <1024, доказывает, что корень в A исследовал клиент NFS, который, как предполагается, удостоверяется что, если он передает запрос, подразумевающий быть от пользователя N затем, что запрос действительно от пользователя N.

Неавторизованные пользователи, не бывшие способные выполнять серверы на низких портах, являются другим преимуществом, но не основным. Назад в дни, спуфинг был вполне новинкой, и пользователи, выполняющие серверы имитации, будут быстро аннулированы бдительными администраторами так или иначе.

52
27.01.2020, 19:33
  • 1
    Так, вид аутентификации плохого человека, затем? Эта конвенция обладает каким-либо реальным преимуществом в современном *, как будто отклоняют операционные системы? –  Andrew Lambert 13.07.2011, 04:10
  • 2
    @Amazed: мир Unix консервативен, таким образом, вопрос спросить, "Он доставляет какие-либо реальные неприятности?" (и этому нужно ответить в полном знании, что каждый разъединять стоящий выполнения, имеет параметр командной строки для изменения порта). –  dmckee --- ex-moderator kitten 13.07.2011, 05:47
  • 3
    @dmckee можно было также утверждать, что такой дизайн приводит к большему количеству серверов, работающих как корень, даже если у них есть опция работы альтернативных портов. –  Andrew Lambert 13.07.2011, 07:10
  • 4
    @Amazed Это может все еще иногда быть полезно сегодня в локальных сетях. Я не думаю, что это приводит к большему количеству серверов, работающих как корень, сервисы могут связать порт, затем отбрасывают полномочия или используют возможности при наличии, или администратор может перенаправить порт на конфигурации брандмауэра. Я не думаю, что это было бы вставлено, если бы Unix был разработан сегодня, но это не причиняет боль. –  Gilles 'SO- stop being evil' 13.07.2011, 10:11

Теги

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