我在虚拟机上有一个 radiusd 服务器,当我发出“radiusd -X”(又称调试模式)时,它已经配置完毕并开始工作。我唯一的问题是,当我尝试将其作为服务运行时,它会失败...
这是我在日志中收到的错误,
“2014 年 6 月 28 日星期六 17:51:12:错误:无法绑定到接口 eth1:操作不允许 2014 年 6 月 28 日星期六 17:51:12:错误:/etc/raddb/radiusd.conf[240]:绑定到端口 0.0.0.0 1812 时出错”
确实,它说该操作是不允许的,但我不知道 Linux 可以禁止任何接口上的绑定……此外,端口 (1812) 不是特权端口。我的机器正在运行 Scientific Linux 6.5(RHEL fork)。我已经尝试禁用 selinux,但没有奏效。无论如何,我还禁用了 radiusd.conf 中的用户开关,因此 radiusd 以 root 身份运行,但我仍然有操作不允许的错误。这又很奇怪了,它只能证明服务没有以 root 身份运行 radiusd,但现在“radiusd -X”和 ps faux 显示 radiusd 以 root 身份运行。为什么我使用服务文件这一简单事实会导致它不能以 root 身份运行?
这是服务文件的启动函数。
start() {
[ -x $exec ] || exit 5
[ -f $config ] || exit 6
echo -n $"Starting $prog: "
daemon --pidfile $pidfile $exec -d $config_dir
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
如能提供任何帮助我将非常感激:) 谢谢。
编辑:我通过以最小的方式重写服务文件解决了我的问题,但这仍然不是最好的方法......
start() {
echo "Starting radiusd"
radiusd
}
stop() {
echo "Stopping radiusd"
killall radiusd
echo "done"
}