为什么 sshd 需要绝对路径?

dai*_*isy 35 security path executable sshd

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

是否有任何安全隐患?

PS错误信息:

# sshd
sshd re-exec requires execution with an absolute path
Run Code Online (Sandbox Code Playgroud)

Jen*_*y D 31

这是从 3.9 版本开始特定于 OpenSSH 的。

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

以下是 3.9 发行说明中的​​引述:

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

在任何情况下,通常最好使用其 init 脚本(例如/etc/init.d/sshd restart)或使用service sshd restart. 如果不出意外,它将帮助您验证该服务是否会在下次重新启动后正常启动...

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

  • 你的意思是你在帖子中没有提到的错误信息? (6认同)
  • 我的错,编辑了帖子 (2认同)

Tim*_*imo 8

这是为了防止有人sshd在您的目录之一中的某处注入程序,PATH 而您无意中执行了它。2004 年的这篇文章已经描述了这个问题。