Mengapa arahan #include dan #includedir di sudo diawali dengan karakter pound (#)

36

Saat menyiapkan sudolingkungan saya perhatikan bahwa directive include diawali dengan karakter pound (#).

Solaris menunjukkan ini sebagai:

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

Manual (Linux dan Solaris) menyatakan:

Termasuk file lain dari dalam sudoers Mungkin untuk memasukkan file sudoers lain dari dalam file sudoers yang sedang diuraikan menggunakan arahan #include dan #includedir.

Dan:

Karakter khusus lainnya dan kata-kata yang dicadangkan Tanda pon (`# ') digunakan untuk menunjukkan komentar (kecuali jika itu adalah bagian dari arahan #include atau kecuali itu terjadi dalam konteks nama pengguna dan diikuti oleh satu atau lebih digit, dalam hal ini diperlakukan sebagai uid). Baik karakter komentar dan teks apa pun setelahnya, hingga akhir baris, diabaikan.

Apakah ada yang tahu mengapa pilihan dibuat untuk menggunakan karakter pound dalam #includedan #includedirarahan?

Sebagai catatan: Saya sering menggunakan sesuatu seperti egrep -v '^#|^$' configfileuntuk mendapatkan pengaturan non-default / aktif yang dikonfigurasi, dan ini jelas tidak berfungsi untuk sudoersfile.

Lambert
sumber

Jawaban:

38

#includeditambahkan pada tahun 2004 . Itu harus kompatibel dengan apa yang sudah ada di sana. Saya tidak berpikir include /path/to/fileakan ambigu, meskipun, tetapi mungkin akan sedikit lebih sulit untuk mengurai, karena parser harus membedakan include /path/to/file(termasuk arahan) dari include = foo(izinkan pengguna includeuntuk menjalankan perintah foo).

Tapi saya pikir sebagian besar alasannya adalah untuk terlihat seperti preprocessor C, yang secara manual mengutip sebagai inspirasi.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
1
Bagus menangkap dan penjelasan, sayangnya penjelasan tersebut dihapus dari manual (setidaknya di Ubuntu, RedHat, OpenBSD, dan Solaris).
Lambert
2
Pertama kali saya menganalisis sudoersfile saya saya pikir includeadalah arahan dan #includearahan berkomentar . Aturan yang paling tidak mengejutkan dilanggar dengan keras. Menurut saya itu desain yang buruk.
Kamil Maciorowski