【发布时间】:2020-01-06 03:33:00
【问题描述】:
我试图找出为什么在 Linux 服务配置文件中几乎所有的行都被注释掉了。我找不到答案。
那么有效的配置是什么?它是否在系统中的某处硬编码并且配置文件的更改(例如通过取消注释和更改值)通过覆盖默认配置(在注释掉的行中)应用?
取消注释这些行的结果是什么?据我所知,它应该什么都不做。那为什么他们被注释掉了呢?
我知道这听起来有点傻,但我真的很想知道为什么要实现这样的机制,这有点不直观。
这个问题适用于很多服务,例如安装后的 SSH 服务。
【问题讨论】:
-
开发人员通常会提供注释行,以便用户通过取消注释他们需要的特定行来更轻松地配置产品。您可以使用
grep -v '^#' /etc/ssh/ssh_config | grep .快速查看活动线路。 -
是的,我知道这一点,但我的观点是:系统从什么位置获取有关服务配置的默认值的信息,用户有没有办法访问它们?还是只是由创建服务的开发人员硬编码?我的意思是,有一些默认设置存储在“某处”。在重新启动服务时,解析器会检查配置文件的内容并对未注释的行做出“反应”,然后用配置文件中设置的默认值覆盖这些默认值。我说的对吗?
-
产品应该(并且在许多情况下)在其文档中提供有关默认值的信息。通常有四步默认:①硬编码,②配置文件覆盖,③环境变量覆盖,④命令行参数覆盖。因此,如果您提供命令行参数,这将优先。否则将使用特定环境变量或配置文件中的内容。如果没有找到,则使用硬编码的默认值。
-
在
man sshd我发现:command line option: -p port: Specifies the port on which the server listens for connections (default 22). […] Ports specified in the configuration file with the Port option are ignored when a command-line port is specified. -
谢谢,现在一切都清楚了,至少在这种情况下 :)
标签: linux ssh comments config-files