如何检查配置文件是否已被读取?

如何检查配置文件是否已被读取?

看来/etc/ssh/sshd_configSSH 守护进程没有发现对我的文件所做的修改。出于测试目的,我添加了DenyUsers *,执行了service ssh restart,甚至重启了整个系统。但我仍然可以从远程 ssh 。

我如何检查文件是否/etc/ssh/sshd_config已被读取sshd

答案1

如果我不确定某个程序是否读取了特定的配置文件(或读取顺序),我会尝试使用 来跟踪打开的系统调用strace。为此,请停止 ssh 守护程序。然后通过以下方式在终端中手动启动它:

strace -e open -ostrace.out /usr/sbin/sshd

启动后,当前工作目录中应该有一个名为的文件strace.out。在我的情况下,它看起来像这样(输出已精简):

open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
...
many libraries
...
open("/proc/filesystems", O_RDONLY)     = 3
open("/dev/null", O_RDWR)               = 3
open("/usr/lib/ssl/openssl.cnf", O_RDONLY) = 3
open("/etc/ssh/sshd_config", O_RDONLY)  = 3 <--- here sshd_config was opened
open("/dev/urandom", O_RDONLY|O_NOCTTY|O_NONBLOCK) = 3
open("/etc/gai.conf", O_RDONLY|O_CLOEXEC) = 3
open("/etc/nsswitch.conf", O_RDONLY|O_CLOEXEC) = 3
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
...
open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
...
ssh keys
...
open("/etc/ssh/blacklist.ECDSA-256", O_RDONLY) = -1 ENOENT (No such file or directory)

通过这个测试,我可以确保sshd读取我的/etc/ssh/sshd_config。在最后一项中,您可以看到我的系统上找不到此文件(-1)。

相关内容