为什么sshd需要绝对路径?


23

为什么sshd重启时需要绝对路径,例如/usr/sbin/sshd而不是sshd

是否有任何安全隐患?

PS错误信息:

# sshd
sshd re-exec requires execution with an absolute path

Answers:


20

从3.9版开始,这特定于OpenSSH。

对于每个新连接,sshd都会重新执行自身,以确保为每个新连接重新生成所有执行时随机化。为了使sshd重新执行自身,它需要知道自身的完整路径。

以下是3.9版本说明中的报价:

  • 使sshd(8)在接受新连接时重新执行自身。此安全措施可确保在主进程的生命周期中,对每个连接重新应用所有执行时间随机化,而不是一次。这包括mmap和malloc映射,共享库寻址,共享库映射顺序,支持此类的系统上的ProPolice和StackGhost cookie。

无论如何,通常最好使用其初始化脚本(例如/etc/init.d/sshd restart)或使用来重新启动服务service sshd restart。如果没有其他问题,它将帮助您验证服务在下次重新启动后是否可以正常启动...

原始答案,现在无关紧要:我的第一个猜测是那/usr/sbin不在您的$ PATH中。


当然,它在$ PATH中,否则如何从sshd中获取该错误消息; -P
雏菊

6
您的意思是您在帖子中未提及的错误消息?
珍妮·D

2
我不好,编辑了
雏菊2014年

6

这是为了防止某人将sshd程序注入您目录中某个目录中的某个位置,PATH 而您又无意间执行了该程序。2004年的这篇文章已经描述了这个问题。


尽管该帖子正确地描述了该问题,但该主题中得出的结论是错误的。这不是错误,而是一个功能:-)
詹妮·D

@JennyD为什么您认为它是一个错误?我从来没有暗示过。
Timo 2014年

在您链接到的帖子中,一个响应是“通过升级到最新的openssh造成的漏洞”。该线程中没有任何答案提到需要完整路径的实际原因-有些提到的原因与您相同,这很合理,并且说明了为什么对于所有打开程序的登录可能性使用完整路径是个好主意。但这不是此特定程序具有该要求的实际原因。
珍妮·D
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.