rlm_perl - dbi - freetds works on radiusd -X but fails to sql connect in background
I've changed the example.pl perl script so it 'use DBI;' to query a Sybase server via freetds. It works fine when running in foreground "radiusd -X" while testing. However, if ran in background, the perl script gets triggered, but the dbi connect fails: my $dbh = DBI->connect("dbi:Sybase:server=*****", $user, $passwd, {PrintError => 0}); Error: rlm_perl: perl_embed:: module = /etc/raddb/myperlscript.pm , func = authenticate exit status= Unable for connect to server OpenClient message: LAYER = (0) ORIGIN = (0) SEVERITY = (78) NUMBER = (41) Server ******, database Message String: Server is unavailable or does not exist. * Tethereal shows that there is no network activity towards the Sybase server. * At first I guessed using user radiusd instead of root would sabotage access to /etc/freetds.conf and/or freetds libraries, but changing radiusd.conf so it keep root priviledges didn't help. * I've been checking environment parameters between foreground and background, but could not find a discriminator. * Assuming some chroot'ing getting done by radiusd I have moved freetds.conf inside /etc/raddb ( and /etc/raddb/etc ) to no avail. * I have ran strace -f -p <pid> in the hope to see what the perlscript tries to do when invoked by a radius request, but I only see it writing the error to the /var/log/radius/radius.log * Changed the hostname towards ip address in /etc/freetds.conf to avoid a failing name resolving. Any hints welcome for solution or better tools to debug/strace into the perl script.
hi, do you have eg SELINUX running on this system? if so, then it may be blocking access between the processes. check your selinux log (or change the mode to permissive and check logs!) and then edit the selinux config to allow operation alan
participants (2)
-
A.L.M.Buxey@lboro.ac.uk -
nes pa