Neden #include ve #includedir direktifleri sudo'da pound (#) karakteriyle ön eklenmiştir?


36

Bir ortam kurarken sudoinclude direktifinin pound (#) karakteriyle öneki olduğunu fark ettim.

Solaris bunu şöyle gösterir:

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

Elkitabı (Linux ve Solaris) şöyle belirtir:

Diğer sudoer dosyalarının dahil edilmesi Şu anda #include ve #includedir direktifleri kullanılarak ayrıştırılmakta olan sudoers dosyasının içinden diğer sudoers dosyalarını dahil etmek mümkündür.

Ve:

Diğer özel karakterler ve ayrılmış kelimeler Pound işareti (`# ') bir yorumu belirtmek için kullanılır (#include direktifinin bir parçası değilse veya bir kullanıcı adı bağlamında gelmiyorsa ve bir veya daha fazla rakam ise), bu durumda bir kullanıcı olarak kabul edilir). Hem yorum karakteri hem de satırın sonuna kadar olan metinler dikkate alınmaz.

Pound karakterini #includeve #includedirdirektiflerinde kullanma seçiminin neden yapıldığını bilen var mı ?

Yan not olarak: Genellikle egrep -v '^#|^$' configfilevarsayılan olmayan / etkin yapılandırılmış ayarları almak gibi bir şey kullanırım ve bu açıkça sudoersdosya için çalışmaz .

Yanıtlar:


38

#include2004 yılında eklendi . Zaten orada olanlarla uyumlu olması gerekiyordu. include /path/to/fileYine de belirsiz olacağını düşünmüyorum , ancak ayrıştırmak biraz daha zor olabilirdi, çünkü çözümleyici ayırt etmek include /path/to/file(yönergeyi dahil etmek ) include = foo(kullanıcının includekomutu çalıştırmasına izin vermek ) zorunda kalacaktı foo.

Ancak bence çoğunlukla sebep, kılavuzun açıkça ilham kaynağı olduğu C ön işlemcisine benzemek .


1
Güzel yakalama ve açıklama, ne yazık ki bu açıklamalar kılavuzlardan kaldırıldı (en azından Ubuntu, RedHat, OpenBSD ve Solaris).
Lambert

2
Benim analiz ilk kez sudoersdüşündüm dosyayı includebir direktif ve #includebir yönerge olduğu açıklanır . En az sürpriz kuralı zor ihlal etti. Bence bu kötü tasarım.
Kamil Maciorowski
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.