sudo의 #include 및 #includedir 지시문이 파운드 (#) 문자로 시작되는 이유


36

sudo환경을 설정하는 동안 include 지시문 앞에 파운드 (#) 문자가 붙는 것을 알았 습니다 .

솔라리스는 이것을 다음과 같이 보여줍니다 :

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

수동 (Linux 및 Solaris) 상태는 다음과 같습니다.

sudoers 내에 다른 파일 포함 #include 및 #includedir 지시문을 사용하여 현재 구문 분석중인 sudoers 파일 내에 다른 sudoers 파일을 포함시킬 수 있습니다.

과:

다른 특수 문자 및 예약어 파운드 기호 (`# ')는 주석을 나타내는 데 사용됩니다 (#include 지시문의 일부가 아니거나 사용자 이름의 컨텍스트에서 발생하고 하나 이상의 숫자가 오는 경우가 아니면) 이 경우 uid로 취급됩니다). 주석 문자와 그 뒤의 텍스트는 줄 끝까지 무시됩니다.

#includeand #includedir지시문 에서 파운드 문자를 사용하도록 선택한 이유를 아는 사람이 있습니까?

참고로 : 종종 egrep -v '^#|^$' configfile기본이 아닌 / 활성 구성되지 않은 설정을 얻는 것과 같은 것을 사용 하며 이는 분명히 sudoers파일에서 작동하지 않습니다 .

답변:


38

#include2004 년 에 추가 되었습니다 . 이미 존재했던 것과 호환 가능해야했습니다. 내가 생각하지 않습니다 include /path/to/file하지만, 모호했을 것이다, 그러나 파서는 구별해야 있기 때문에, 좀 더 열심히 구문 분석되었을 수 있습니다 include /path/to/file에서 (지침 포함) include = foo(사용자가 허용 include명령을 실행 foo).

그러나 대부분의 이유는 매뉴얼이 명시 적으로 영감으로 인용 하는 C 전 처리기처럼 보이기 때문이라고 생각합니다 .


1
좋은 설명과 설명, 불행히도 이러한 설명은 매뉴얼에서 제거됩니다 (적어도 Ubuntu, RedHat, OpenBSD 및 Solaris).
Lambert

2
sudoers파일을 처음 분석 할 때 지시문이라고 언급include 된 지시문 이라고 생각 했습니다 . 가장 놀람의 규칙은 열심히 위반했습니다. 제 생각에는 나쁜 디자인입니다. #include
Kamil Maciorowski
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.