radiusd.conf(5) پرونده پیکربندی FreeRADIUS radiusd.conf(5)

radiusd.conf - پرونده پیکربندی اصلی سرور FreeRADIUS

پرونده radiusd.conf در دایرکتوری پایگاه‌داده رادیوس (radius) قرار دارد، که به‌طور پیش‌فرض /etc/raddb است. این پرونده پیکربندی سراسری سرور رادیوس FreeRADIUS را تعریف می‌کند.

تعداد زیادی پارامتر پیکربندی برای سرور وجود دارد. بیشتر آن‌ها درون خود پرونده به‌صورت کامنت مستند شده‌اند. این صفحه تنها قالب پرونده را مستند می‌کند. لطفاً برای اطلاعات بیشتر، خودِ پرونده radiusd.conf را بخوانید.

تجزیه‌کننده (parser) پرونده پیکربندی مستقل از پیکربندی سرور است. این بدان معناست که شما می‌توانید تقریباً هر چیزی را در پرونده پیکربندی قرار دهید. تا زمانی که قالب‌بندی آن درست باشد، سرور اجرا خواهد شد.

هنگامی که سرور پرونده پیکربندی را تجزیه می‌کند، تنها به دنبال پیکربندی‌هایی می‌گردد که آن‌ها را می‌فهمد. موارد پیکربندی اضافی نادیده گرفته می‌شوند. از این «ویژگی» می‌توان به روش‌های جالب خاصی (سوء)استفاده کرد.

قالب پرونده خط‌محور است، مانند بسیاری دیگر از پرونده‌های پیکربندی یونیکس. هر مدخل در پرونده باید در یک خط مستقل قرار گیرد، هرچند ادامه‌دار بودن خطوط نیز پشتیبانی می‌شود.

این پرونده از موارد پیکربندی (جفت‌های مقدار = متغیر)، بخش‌ها و کامنت‌ها تشکیل شده است.

متغیرها (Variables)
متغیرها را می‌توان به این صورت مقداردهی کرد:
name = value

رشته‌های درون نقل‌قول تکی و دوتایی مجاز هستند:

string1 = "hello world"
string2 = 'hello mom'
بخش‌ها (Sections)
یک بخش با نام بخش آغاز می‌شود و در ادامه همان خط، یک براکت باز ´{´ قرار می‌گیرد. بخش ممکن است شامل بخش‌های دیگر، کامنت‌ها یا متغیرها باشد. بخش‌ها می‌توانند تا هر عمقی تودرتو شوند و تنها با حافظه موجود محدود می‌شوند. یک بخش با یک براکت بسته ´}´ در یک خط مستقل پایان می‌یابد.
section {
	...
}

بخش‌ها گاهی می‌توانند یک نام دوم نیز پس از نام نخست داشته باشند. موقعیت‌هایی که این کار در آن‌ها مجاز است به زمینه (context) بستگی دارد. برای اطلاعات بیشتر، مثال‌ها و کامنت‌های درون پرونده radiusd.conf را ببینید.

section foo {
	...
}
کامنت‌ها (Comments)
هر خطی که با (#) آغاز شود، کامنت تلقی شده و نادیده گرفته می‌شود. کامنت‌ها می‌توانند پس از تعریف متغیر یا بخش ظاهر شوند.
# comment
foo = bar # set variable 'foo' to value 'bar'
section {	# start of section
...
}		# end of section
ادامه‌دهنده‌ها (Continuations)
خطوط طولانی را می‌توان با استفاده از کاراکتر '\' به عنوان آخرین نویسه خط، به چند خط تقسیم کرد. برای نمونه، مدخل زیر:
foo = "blah \
blah \
blah"

مقدار متغیر "foo" را برابر با "blah blah blah" قرار می‌دهد. هیچ‌کدام از نویسه‌های CR یا LF به فاصله (space) تبدیل نمی‌شوند، اما تمام فاصله‌های دیگر در مقدار نهایی حفظ می‌گردند.

مقدار یک متغیر می‌تواند به متغیر دیگری ارجاع دهد. این ارجاعات هنگام بارگذاری پرونده پیکربندی ارزیابی می‌شوند، به این معنی که هیچ بار پردازشی در زمان اجرا نخواهند داشت. این ویژگی برای تبدیل قطعات متنی طولانی و مکرر به قطعات کوتاه بسیار کاربردی است.

همان‌طور که در مثال‌های زیر نشان داده شده است، به متغیرها با ${variable_name} ارجاع داده می‌شود:

foo = bar       # set variable 'foo' to value 'bar'
who = ${foo}    # sets variable 'who' to value of variable 'foo'
my = "${foo} a" # sets variable 'my' to "bar a"

اگر متغیر در یک بخش یا زیربخش قرار داشته باشد، می‌توان با ${section.subsection.variable} به آن ارجاع داد. ارجاع به جلو (Forward reference) مجاز نیست. ارجاعات نسبی با قرار دادن یک یا چند نقطه در ابتدای نام مجاز هستند.

blogs = ${.foo}

متغیر blogs را برابر با مقدار متغیر foo از بخش جاری قرار می‌دهد.

blogs = ${..foo}

متغیر blogs را برابر با مقدار متغیر foo از بخشی که بخش جاری را در بر دارد قرار می‌دهد.

blogs = ${modules.detail.filename}

متغیر blogs را برابر با مقدار متغیر filename از ماژول detail که در بخش modules پرونده پیکربندی قرار دارد، قرار می‌دهد.

همچنین می‌توان به ویژگی‌های بخش‌های والد ناشناس ارجاع داد؛ در حال حاضر name و instance پشتیبانی می‌شوند.

modules {
	example foo {
		file = ${.:name}
	}
}

متغیر file را برابر با نام بخش دربرگیرنده (example) قرار می‌دهد.

modules {
	example foo {
		file = ${.:instance}
	}
}

متغیر file را برابر با نام نمونه (instance name) بخش دربرگیرنده (foo) قرار می‌دهد.

modules {
	example foo {
		file = ${..:name}
	}
}

متغیر file را برابر با نام والدِ بخش دربرگیرنده (modules) قرار می‌دهد.

/etc/raddb/radiusd.conf

radiusd(8) unlang(5)

Alan DeKok <aland@freeradius.org>

28 Jun 2013