FreeRADIUS文件格式详解

内容分享5天前发布
0 0 0

简介

文件格式是围绕三个基本元素构建的:变量赋值、变量和模块引用以及章节。

配置文件的格式是基于行的文本。每个配置设置必须在单独的行上。任何看过其他Unix配置文件的人都应该熟悉这种格式。

注释是允许的,并且很容易通过使用#字符识别:#字符之后的任何文本都被认为是注释,因此解析器会忽略它。空格、制表符和空行没有任何意义,解析器也会忽略它们。

可以通过在换行的位置上放置反斜杠()作为最后一个字符来撤销无意的换行。在下面的例子中,等号后面的反斜杠将第一行和第二行都强制放到一个连续的行上:

foo = 
bar

上面的例子被解释为:

foo = bar

变量赋值

FreeRADIUS一般具有具有预定义含义的预定义变量名。例如,变量raddbdir定义了服务器存储配置文件的目录。变量被赋值。值可以是整数、字符串、文件名等。

可以使用多种格式将字符串赋值给变量。与大多数系统一样,可以使用单引号和双引用字符串。空格和其他字符也可以在字符串中使用。例如:

secret = testing123
secret = "testing 1 2 3"
secret = 'testing 1 2 3'

上面的第一个示例将secret变量设置为testing123。第二个和第三个例子设置为1 2 3,其中包含了空格。

第二个示例和第三个示例的区别在于,双引号表明字符串可以动态扩展,而字符串周围的单引号表明值是“as-is”,不进行扩展。

动态展开在使用变量间引用时最有用。例如:

foo = bar # sets variable foo’ to value ’bar’
other = "my ${foo}" # sets variable ’other’ to value ’a bar’
third = 'my ${foo}’ # sets variable ’third’ to value ’my ${foo}'

变量引用

当多个变量包含一样的值时,可以使用变量引用。在本例中,默认配置(第一行)定义了一个logdir变量。然后根据logdir变量引用引用该目录中各种日志文件的位置。

logdir = /var/log/radius
...
file = ${logdir}/radius.log
...
detailfile = ${logdir}/detail

模块引用

模块引用可以实现服务器加载共享模块,在服务器收到数据包时调用该模块。服务器只在选定的位置使用这些引用(例如,授权或认证子模块),如果在其他地方使用,则会导致错误。

章节

章节用来定义配置变量的逻辑组。网络管理员给每个章节一个名称,并使用{}字符将组括起来:

mygroup {
foo = bar
other = "my ${foo}"
}

前面的示例定义了一个名为' mygroup '的简单章节,其中包含两个变量' foo '和' other '。和变量名一样,在FreeRADIUS系统中,章节名也被赋予特定的含义。例如,章节名称client定义了一组与特定RADIUS客户端相关联的变量。

要定义多个client,需要为每个client创建一个client章节。第二个限定符(也称为“实例名”)被添加到章节中,以区分同一类型的不章节。下面的例子显示了两个名为foo和bar的客户端:

client foo {
    ipaddr = 192.0.2.100
    secret = testing123
}
client bar {
    ipaddr = 192.0.2.200
    secret = very_secret
}

有许多章节类型名称,包括client、home_server、home_server_pool和realm,服务器将识别这些名称。于每个章节类型的是有可以在该章节中特定使用的变量列表。展示这些概念的例子可以在默认配置中找到;章节名、函数和变量赋值都记录在每行周围的注释中。

通过包含文件进行引用

配置文件可以被分割成多个部分,然后在加载时使用$INCLUDE指令重新组装。这个指令使配置包含当前位置的特定文件,就像引用的文件被插入到文件中取代$INCLUDE一样。例如,如果我们有一个名为other.conf的文件,其中包含以下文本:

other = "my ${foo}"

那么以下两种构型是一样的:

1.

foo = bar
other = "my ${foo}"

2.

foo = bar
$INCLUDE other.conf

上面的示例2使用$INCLUDE来拉入other.conf文件,这将导致与上面的示例1一样的配置。

网络管理员使用$INCLUDE指令来组织配置文件。以/开头的文件是绝对路径。否则,路径是相对于当前文件的。

绝对路径:$INCLUDE /etc/raddb/foo.conf

相对路径:$INCLUDE example/foo.conf

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...