¿Por qué las directivas #include y #includedir en sudo tienen como prefijo el carácter de libra (#)

36

Al configurar un sudoentorno, noté que la directiva include está prefijada con el carácter de libra (#).

Solaris muestra esto como:

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

El manual (Linux y Solaris) establece:

Inclusión de otros archivos desde dentro de sudoers Es posible incluir otros archivos de sudoers desde dentro del archivo de sudoers que se analiza actualmente utilizando las directivas #include y #includedir.

Y:

Otros caracteres especiales y palabras reservadas El signo de número (`# ') se usa para indicar un comentario (a menos que sea parte de una directiva #include o a menos que aparezca en el contexto de un nombre de usuario y esté seguido por uno o más dígitos, en cuyo caso se trata como un uid). Se ignoran tanto el carácter del comentario como cualquier texto que se encuentre después, hasta el final de la línea.

¿Alguien sabe por qué se tomó la decisión de utilizar el carácter de libra en las directivas #includey #includedir?

Como nota al margen: a menudo uso algo como egrep -v '^#|^$' configfileobtener las configuraciones configuradas no predeterminadas / activas, y esto obviamente no funciona para el sudoersarchivo.

Lambert
fuente

Respuestas:

38

#includefue agregado en 2004 . Tenía que ser compatible con lo que ya estaba allí. include /path/to/fileSin embargo, no creo que hubiera sido ambiguo, pero podría haber sido un poco más difícil de analizar, porque el analizador tendría que distinguir include /path/to/file(incluir directiva) de include = foo(permitir que el usuario includeejecute el comando foo).

Pero creo que principalmente la razón era parecerse al preprocesador C, que el manual cita explícitamente como inspiración.

Gilles 'SO- deja de ser malvado'
fuente
1
Buena captura y explicación, desafortunadamente esas explicaciones se eliminan de los manuales (al menos en Ubuntu, RedHat, OpenBSD y Solaris).
Lambert
2
La primera vez que analicé mi sudoersarchivo pensé que includeera una directiva y #includeuna directiva comentada . La regla de la menor sorpresa violó con fuerza. En mi opinión, es un mal diseño.
Kamil Maciorowski