SSHD не показывает в PATH, но SSH показывает?

232
aditya rawat

В настоящее время я работаю над протоколом SSH в Python, и я потратил огромное количество времени, чтобы запустить сервер OpenSSH. После этого я смог запустить его и нормально запустить свои скрипты Python. Там не было никаких проблем разрешения ни для одного.

Но проблема в том, что когда я это делаю, which sshон указывает местоположение клиента openssh (usr / bin / ssh). Но когда я пытаюсь which sshdэто ничего не возвращает, но сервер работает нормально до сих пор. Почему это происходит и как я могу это исправить?

0
Это кажется нормальным. `sudo which sshd` должен что-то напечатать. Нечего исправить. Kamil Maciorowski 5 лет назад 0
@KamilMaciorowski a "which sshd" отлично работает для меня как обычного пользователя на моем Ubuntu 16.04 и CentOS 6 box. Частичный обходной путь (от имени root) может заключаться в использовании find / -type f -executable -name "sshd" davidgo 5 лет назад 0
@KamilMaciorowski вы правы. Не о чем беспокоиться. Но, как отметил Давидго, он также должен работать без привилегий root. aditya rawat 5 лет назад 0
Нет, потому что демон SSHD должен быть пользователем root для запуска, так как он открывает один из «нижних» портов ... Кроме того, он обычно используется в качестве службы, его точное местоположение имеет значение только в определении службы. xenoid 5 лет назад 0
@xenoid Спасибо за вашу помощь. Это очень ясно мне. aditya rawat 5 лет назад 0

1 ответ на вопрос

2
Kamil Maciorowski

sshобычно предназначен для запуска кем-либо, а sshdне для вызова обычными пользователями; поэтому первый находится (например) в, /usr/binа второй в /usr/sbin.

Ну, эти пути могут отличаться. Дело в том, что каталог sshисполняемого файла принадлежит обычному пользователю PATH, но каталог sshdисполняемого файла обычно отсутствует ( хотя он должен быть в root's' PATH).

Вы можете изменить своего (обычного пользователя) PATHсамостоятельно, но добавление /usr/sbinк нему не принесет особой пользы, потому что вы либо не сможете выполнять файлы в нем, либо вы сможете формально выполнять их, но у вас будет разрешение проблемы позже.

Ничего особенно плохого в этом нет, вы не сможете сломать систему таким образом. Однако это засоряет ваш набор командной строки (расширение вкладки) исполняемыми файлами, которые вам никогда не понадобится запускать как обычный пользователь.

Эти исполняемые файлы нужны rootпо причинам. По sshdпричинам:

  • он предназначен для общесистемной службы, демона; запускаться при запуске системы, когда пользователи даже не вошли в систему; впустить других пользователей в систему;
  • он часто открывает «низкий» порт, обычным пользователям редко разрешают это делать.

which sshdничего не возвращает для вас, sudo which sshdдолжен вернуть что-то. Это кажется нормальным. Там нет ничего, чтобы исправить.

За исключением того, что она МОЖЕТ быть запущена обычными пользователями - это не редкость сделать и просто запустить ее на порту 2222 davidgo 5 лет назад 0
@davidgo: '' *** она *** может быть запущена обычными пользователями ''? Я надеюсь, что это автозамена. … А если серьезно - хотя это правда, что обычный пользователь может привязать сокет к порту # 2222, что хорошего в том, чтобы запустить sshd-сервер непривилегированным? Он не может быть настроен для любого пользователя, кроме вас, и он даже не может подтвердить ваш пароль. Я полагаю, что он может поддерживать пароль без входа в систему как вы сами, но каков вариант использования? Scott 5 лет назад 0
Скажи мне, если я правильно понял. SSHD - это демон, то есть общесистемный (серверный) сервис, поэтому имеет смысл, что он находится в `root`` PATH`, тогда как ssh - это пользовательский сервис (клиент для SSH-сервера), так что к нему может обращаться любой. aditya rawat 5 лет назад 0
@adityarawat В основном да. Есть больше инструментов, как это. Демоны или нет, это не имеет значения; важно то, что они полезны особенно для `root`, а не для обычных пользователей. Kamil Maciorowski 5 лет назад 0

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