Dlaczego dyrektywy #include i #includedir w sudo są poprzedzone znakiem pound (#)

36

Podczas konfigurowania sudośrodowiska zauważyłem, że dyrektywa włączająca jest poprzedzona znakiem pound (#).

Solaris pokazuje to jako:

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

Podręcznik (Linux i Solaris) stwierdza:

Dołączanie innych plików z sudoers Możliwe jest dołączanie innych plików sudoers z obecnie analizowanego pliku sudoers za pomocą dyrektyw #include i #includedir.

I:

Inne znaki specjalne i słowa zastrzeżone Znak funta (`# ') jest używany do wskazania komentarza (chyba że jest częścią dyrektywy #include lub chyba, że ​​występuje w kontekście nazwy użytkownika i następuje po nim jedna lub więcej cyfr, w takim przypadku jest to traktowane jako UID). Zarówno znak komentarza, jak i każdy tekst po nim, aż do końca wiersza, są ignorowane.

Czy ktoś wie, dlaczego wybrano użycie funta w dyrektywach #includei #includedir?

Na marginesie: często używam czegoś takiego jak egrep -v '^#|^$' configfileuzyskanie domyślnych / aktywnych skonfigurowanych ustawień, a to oczywiście nie działa dla sudoerspliku.

Lambert
źródło

Odpowiedzi:

38

#includezostał dodany w 2004 r . Musiał być zgodny z tym, co już tam było. Nie sądzę jednak, include /path/to/fileby było to dwuznaczne, ale może być nieco trudniejsze do przeanalizowania, ponieważ analizator składni musiałby odróżniać include /path/to/file(dołączając dyrektywę) od include = foo(pozwalać użytkownikowi includena uruchomienie polecenia foo).

Myślę jednak, że głównie dlatego miał wyglądać preprocesor C, który w podręczniku jest wyraźnie inspirowany.

Gilles „SO- przestań być zły”
źródło
1
Niezły chwyt i wyjaśnienia, niestety te wyjaśnienia zostały usunięte z podręczników (przynajmniej w Ubuntu, RedHat, OpenBSD i Solaris).
Lambert,
2
Kiedy po raz pierwszy przeanalizowałem mój sudoersplik, pomyślałem, że includejest to dyrektywa i #includeto dyrektywa została skomentowana . Reguła najmniejszego zaskoczenia naruszyła mocno. Moim zdaniem jest to zły projekt.
Kamil Maciorowski