Métodos para descobrir quais arquivos (de configuração) são lidos pelo executável quando iniciados

4

Quais são as maneiras inteligentes de descobrir quais arquivos (de configuração) são lidos pelo executável, se iniciado? Por exemplo, snmpd ou sshd . Uma opção é provavelmente verificar a seção CONFIGURATION FILES ou FILES em uma página de manual. O outro, que pensei que funcionaria, é rastrear as chamadas do sistema, mas pelo menos no caso de snmpd , isso parece não funcionar:

root@vserver:~# strace 2>&1 /usr/sbin/snmpd | grep snmpd.conf
root@vserver:~# 

Por último, mas não menos importante, o comando stat também não ajuda, porque o tempo de acesso ao arquivo não é atualizado. Se ele foi atualizado, pode-se obter alguma indicação de possíveis arquivos de configuração executando find /etc/ -type f -amin 1 . Quaisquer outras maneiras de descobrir quais arquivos (de configuração) são lidos pelo executável quando iniciados?

    
por Martin 14.08.2014 / 12:37

1 resposta

3

Uma maneira geral é usar strace :

strace -fe trace=open <command>

Os arquivos de configuração geralmente terminam com .conf . Então você pode filtrar o resultado canalizando para grep '\.conf .

Outra opção, usando strings :

$ strings $(which httpd) | grep '\.conf'
 -D SERVER_CONFIG_FILE="conf/httpd.conf"
conf/httpd.conf
        Allowed in *.conf 
        directive in your httpd.conf file to list a non-root

Muitos programas também têm uma opção para você saber que arquivo de configuração ele lê, exemplo com apache :

$ httpd -V | grep '\.conf'
-D SERVER_CONFIG_FILE="conf/httpd.conf"
    
por 14.08.2014 / 14:06