Tại sao các lệnh #incoide và #includedir trong sudo có tiền tố với ký tự pound (#)


36

Trong khi thiết lập sudomôi trường, tôi nhận thấy rằng lệnh bao gồm có tiền tố với ký tự pound (#).

Solaris cho thấy điều này như:

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

Hướng dẫn sử dụng (Linux cũng như Solaris) nêu rõ:

Bao gồm các tệp khác từ trong sudoers Có thể bao gồm các tệp sudoers khác từ trong tệp sudoers hiện đang được phân tích cú pháp bằng cách sử dụng các lệnh #include và #includedir.

Và:

Các ký tự đặc biệt khác và các từ dành riêng Dấu thăng (`# ') được sử dụng để biểu thị một nhận xét (trừ khi đó là một phần của lệnh #incoide hoặc trừ khi nó xuất hiện trong ngữ cảnh của tên người dùng và được theo sau bởi một hoặc nhiều chữ số, trong trường hợp đó nó được coi là một uid). Cả ký tự nhận xét và bất kỳ văn bản nào sau nó, cho đến cuối dòng, đều bị bỏ qua.

Có ai biết tại sao sự lựa chọn được thực hiện để sử dụng ký tự bảng Anh trong #include#includedirchỉ thị không?

Như một lưu ý phụ: Tôi thường sử dụng một cái gì đó như egrep -v '^#|^$' configfileđể có được các cài đặt được cấu hình không mặc định / hoạt động và điều này rõ ràng không hoạt động cho sudoerstệp.

Câu trả lời:


38

#includeđã được thêm vào năm 2004 . Nó phải tương thích với những gì đã có. Tuy nhiên, tôi không nghĩ include /path/to/filesẽ mơ hồ, nhưng có thể khó phân tích hơn một chút, bởi vì trình phân tích cú pháp sẽ phải phân biệt include /path/to/file(bao gồm lệnh) với include = foo(cho phép người dùng includechạy lệnh foo).

Nhưng tôi nghĩ chủ yếu là lý do là trông giống như bộ tiền xử lý C, mà hướng dẫn sử dụng được trích dẫn rõ ràng là nguồn cảm hứng.


1
Rất hay nắm bắt và giải thích, thật không may, những lời giải thích đó đã bị xóa khỏi hướng dẫn sử dụng (ít nhất là trên Ubuntu, RedHat, OpenBSD và Solaris).
Lambert

2
Lần đầu tiên tôi phân tích sudoerstập tin của mình, tôi nghĩ đó includelà một chỉ thị và #includelà một chỉ thị được nhận xét . Quy tắc ít bất ngờ nhất đã vi phạm cứng. Theo tôi đó là thiết kế tồi.
Kamil Maciorowski
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.