Por que as diretivas #include e #includedir no sudo estão prefixadas com o caractere pound (#)?

23

Durante a configuração de um ambiente sudo , notei que a diretiva include é prefixada com o caractere pound (#).

O Solaris mostra isso como:

## Read drop-in files from /etc/sudoers.d
## (the '#' here does not indicate a comment)
#includedir /etc/sudoers.d

O manual (Linux e Solaris) afirma:

Including other files from within sudoers It is possible to include other sudoers files from within the sudoers file currently being parsed using the #include and #includedir directives.

E:

Other special characters and reserved words The pound sign ('#') is used to indicate a comment (unless it is part of a #include directive or unless it occurs in the context of a user name and is followed by one or more digits, in which case it is treated as a uid). Both the comment character and any text after it, up to the end of the line, are ignored.

Alguém sabe por que foi feita a escolha de usar o caractere de libra nas diretivas #include e #includedir ?

Como uma nota lateral: eu geralmente uso algo como egrep -v '^#|^$' configfile para obter as configurações não-padrão / ativas, e isso obviamente não funciona para o arquivo sudoers .

    
por Lambert 19.11.2015 / 11:36

1 resposta

23

#include foi adicionado em 2004 . Tinha que ser compatível com o que já estava lá. Eu não acho que include /path/to/file teria sido ambíguo, mas poderia ter sido um pouco mais difícil de analisar, porque o analisador teria que distinguir include /path/to/file (incluir diretiva) de include = foo (permitir que o usuário include para executar o comando foo ).

Mas acho que o motivo principal foi parecer com o pré-processador C, que o manual menciona explicitamente como inspiração.

    
por 20.11.2015 / 03:18

Tags