Own exec module with bash: permission denied

Marten Pape Marten.Pape at pape-hn.de
Sun Mar 20 17:29:30 CET 2011


Hello,
in my post-auth section I use a self-created exec-module, that is
supposed to execute a shell script. This shell script exists and its
modifiers are 777. But every time, it should be executed, something like
this appears on debug output:

# Executing section post-auth from file
/etc/freeradius/sites-enabled/default
+- entering group post-auth {...}
/bin/bash: /root/bin/dhcp/update_dhcp_from_radius.sh: Permission denied
Exec-Program output:
Exec-Program: returned: 126
++[dhcpd_start] returns fail
Using Post-Auth-Type Reject

The system is: Debian 6.0, Freeradius 2.1.10; FreeRadius is used for
Wifi->802.1x via EAP-PEAP

Calling a program instead of bash tells me "Permission denied", too.

What could be the problem?

Thank you
Marten

The exec module is:

# -*- text -*-
# 
#  $Id$

# 
#  This is a more general example of the execute module.
#
#  This one is called "dhcp_man".
#
#  Attribute-Name = `%{dhcp_man:/path/to/program args}`
#
#  If you wish to execute an external program in more than
#  one section (e.g. 'authorize', 'pre_proxy', etc), then it
#  is probably best to define a different instance of the
#  'exec' module for every section.
#
#  The return value of the program run determines the result
#  of the exec instance call as follows:
#  (See doc/configurable_failover for details)
#
#  < 0 : fail      the module failed
#  = 0 : ok        the module succeeded
#  = 1 : reject    the module rejected the user
#  = 2 : fail      the module failed
#  = 3 : ok        the module succeeded
#  = 4 : handled   the module has done everything to handle the request
#  = 5 : invalid   the user's configuration entry was invalid
#  = 6 : userlock  the user was locked out
#  = 7 : notfound  the user was not found
#  = 8 : noop      the module did nothing
#  = 9 : updated   the module updated information in the request
#  > 9 : fail      the module failed
#
exec dhcpd_start {
        # 
        #  Wait for the program to finish.
        #      
        #  If we do NOT wait, then the program is "fire and
        #  forget", and any output attributes from it are ignored.
        #      
        #  If we are looking for the program to output
        #  attributes, and want to add those attributes to the
        #  request, then we MUST wait for the program to
        #  finish, and therefore set 'wait=yes'
        wait = yes

        #
        #  The name of the program to execute, and it's
        #  arguments.  Dynamic translation is done on this
        #  field, so things like the following example will
        #  work.
        #
       program = "/bin/bash /root/bin/dhcp/update_dhcp_from_radius.sh
post-auth Start %{User-Name} %{Calling-Station-Id} %{NAS-IP-Address}"
#        program = "/bin/bash whoami"

        #
        #  The attributes which are placed into the
        #  environment variables for the program.
        #
        #  Allowed values are:
        #
        #       request         attributes from the request
        #       config          attributes from the configuration items list
        #       reply           attributes from the reply
        #       proxy-request   attributes from the proxy request
        #       proxy-reply     attributes from the proxy reply
        #
        #  Note that some attributes may not exist at some
        #  stages.  e.g. There may be no proxy-reply
        #  attributes if this module is used in the
        #  'authorize' section.
        #
        input_pairs = request

        #
        #  Where to place the output attributes (if any) from
        #  the executed program.  The values allowed, and the
        #  restrictions as to availability, are the same as
        #  for the input_pairs.
        #
#       output_pairs = reply

        #
        #  When to execute the program.  If the packet
        #  type does NOT match what's listed here, then
        #  the module does NOT execute the program.
        #
        #  For a list of allowed packet types, see
        #  Note that some attributes may not exist at some
        #  stages.  e.g. There may be no proxy-reply
        #  attributes if this module is used in the
        #  'authorize' section.
        #
        input_pairs = request

        #
        #  Where to place the output attributes (if any) from
        #  the executed program.  The values allowed, and the
        #  restrictions as to availability, are the same as
        #  for the input_pairs.
        #
#       output_pairs = reply

        #
        #  When to execute the program.  If the packet
        #  type does NOT match what's listed here, then
        #  the module does NOT execute the program.
        #
        #  For a list of allowed packet types, see
        #  the 'dictionary' file, and look for VALUEs
        #  of the Packet-Type attribute.
        #
        #  By default, the module executes on ANY packet.
        #  Un-comment out the following line to tell the
        #  module to execute only if an Access-Accept is
        #  being sent to the NAS.
        #
        packet_type = Access-Request

        #
        #  Should we escape the environment variables?
        #
        #  If this is set, all the RADIUS attributes
        #  are capitalised and dashes replaced with
        #  underscores. Also, RADIUS values are surrounded
        #  with double-quotes.
        #
        #  That is to say: User-Name=BobUser => USER_NAME="BobUser"
        shell_escape = yes

}





More information about the Freeradius-Users mailing list