2.1.1 - radiusd.sock - permission denied

John Dennis jdennis at redhat.com
Fri Sep 26 19:13:31 CEST 2008


John Horne wrote:
> Hi,
>
> I have installed FR2.1.1 onto a test server, built using the Fedora
> rawhide RPM source. No problems building and installing FR, but when I
> start FR it seems to immediately stop. The radius.log file just shows:
>
>    Fri Sep 26 17:20:58 2008 : Error: Failed to
>    stat /var/run/radiusd/radiusd.sock: Permission denied
>
> The ls command shows:
>
>    ls -l /var/run/radiusd/radiusd.sock
>    srw-rw---- 1 radiusd radiusd 0 Sep 26
>                     16:53 /var/run/radiusd/radiusd.sock
>
> I have tried disabling selinux, and iptables, but they made no
> difference. Changing the permissions to 666 on the socket made no
> difference.
> Running 'radiusd -C' shows nothing, and 'radiusd -X' starts up okay. If
> I then use a different terminal I can run 'radmin' with no problem
> (which I gather uses the socket).
>
> The problem is, I can't see what permissions may be wrong. Anyone any
> ideas on this?
>   
The radiusd.sock is a new unix socket unknown to the SELinux policy for 
radius, thus if SELinux is enabled and in enforcing mode it will deny 
access. You can check if you're really enforcing by using this command.

% getenforce

If it says "Enforcing" then SELinux policy is going to deny access to 
this socket. You can turn it off via

% setenforce 0

You can also verify this is your problem by grepping 
/var/log/audit/audit.log for AVC's, for example:

% sudo grep AVC /var/log/audit/audit.log

type=AVC msg=audit(1222447659.548:1457): avc:  denied  { unlink } for  
pid=17382 comm="radiusd" name="radiusd.sock" dev=sda6 ino=3156948 
scontext=unconfined_u:system_r:radiusd_t:s0 
tcontext=unconfined_u:object_r:radiusd_var_run_t:s0 tclass=sock_file
type=AVC msg=audit(1222447659.548:1458): avc:  denied  { create } for  
pid=17382 comm="radiusd" name="radiusd.sock" 
scontext=unconfined_u:system_r:radiusd_t:s0 
tcontext=unconfined_u:object_r:radiusd_var_run_t:s0 tclass=sock_file
type=AVC msg=audit(1222447659.548:1459): avc:  denied  { setattr } for  
pid=17382 comm="radiusd" name="radiusd.sock" dev=sda6 ino=3156948 
scontext=unconfined_u:system_r:radiusd_t:s0 
tcontext=unconfined_u:object_r:radiusd_var_run_t:s0 tclass=sock_file

This was with SELinux in permissive mode, the key things to look for are 
comm="radiusd" name="radiusd.sock" which says the command was radiusd 
and the name of the object was radiusd.sock.

But because SELinux was in permissive mode everything worked, it just 
told you what it would have denied if it were enforcing.

We need to update the SELinux policy to allow this new socket.

If that's not the problem you're encountering then the only other thing 
I can think of is that you're not running the service from an effective 
uid of root. When the server starts up it will have a uid of root but 
then drop it's privileges to radiusd (not sure if the socket is created 
before or after the privilege drop). But I do know the socket creation 
code does check the socket's gid matches the processe's egid, if not it 
generates an error, but it's a different error message than what you're 
seeing. The error you're seeing is from the stat() call. I strongly 
suspect an SELinux denial. If SELinux is in permissive mode and you're 
still seeing this you might try manually removing 
/var/run/radiusd/radiusd.sock after stopping the service and then 
restart it and see if that resolves the problem.

FWIW, I don't see this problem on my system.

HTH,

-- 
John Dennis <jdennis at redhat.com>




More information about the Freeradius-Users mailing list