RADMIN(8)

πŸ“¦
version 3.2.10 Β· 4 versions
, in alpine 3.22, alpine 3.23, alpine 3.24, arch rolling, centos-stream 10, centos-stream 9, fedora 43, fedora 44, opensuse-leap 16.0

✨ NAME ✨

radmin β€” the FreeRADIUS Administration tool πŸ’…

okay so real quick, before anything else: this is radmin(8), the FreeRADIUS Server Administration Tool, and she is that girl. Let's get into it πŸŽ€


🌸 SYNOPSIS 🌸

radmin [-d config_directory] [-D dictionary_directory] [-e command] [-E]
[-f socket_file] [-h] [-i input_file] [-n name] [-q]

πŸ¦‹ DESCRIPTION πŸ¦‹

So radmin is the FreeRADIUS Server administration tool β€” she connects to the control socket of a server that's already running and gives you a whole command-line interface to it. Bestie, it's giving remote control but make it Unix 🫢

rn? only a few commands are supported. That's not me being shady, that's literally the manpage. Type help at the command prompt for the detailed tea on what's actually supported πŸ’–


πŸ”₯ WARNING πŸ”₯

okay listen, this part matters so pay attention πŸ’€

The security protections this command offers are limited to the permissions on the Unix domain socket, and the server configuration. That's it. That's the whole vibe check.

If someone can connect to the Unix domain socket, they have a substantial amount of control over the server. Like, a lot. Not a little. A substantial amount. no cap 😭

⭐ OPTIONS ⭐

here's every command-line option the program accepts, no skips, no skips, we don't do that here ✨

  • -d config_directory β€” Defaults to /etc/raddb. radmin looks here for the server configuration files so she can find the listen section that defines the control socket filename πŸ‘€
  • -D dictionary_directory β€” Set the main dictionary directory. Defaults to /usr/share/freeradius. πŸ“
  • -e command β€” Run command and exit. In and out, main character energy πŸ’¨
  • -E β€” Echo commands as they're being executed. Narration mode πŸŽ™οΈ
  • -f socket_file β€” Specify the socket filename directly. The radiusd.conf file is not read. (she's going straight to the source, no middleman πŸ’…)
  • -h β€” Print usage help information. 🫢
  • -i input_file β€” Reads input from the specified file. If not specified, stdin is used. This also sets -q. 🌈
  • -n mname β€” Read raddb/name.conf instead of raddb/radiusd.conf. 🧚
  • -q β€” Quiet mode. 🀫

πŸ‘‘ COMMANDS πŸ‘‘

The commands implemented by the command-line interface are almost completely controlled by the server β€” she's not the boss, the server is. But there are a few commands interpreted locally by radmin:

  • reconnect β€” Reconnect to the server. πŸ”
  • quit β€” Exit from radmin.
  • exit β€” Exit from radmin.

The other commands are implemented by the server. Type help at the prompt for more information πŸ’–


🌟 EXAMPLES 🌟

πŸ’œ debug file /var/log/radius/bob.log

Set debug logs to /var/log/radius/bob.log.

ngl bestie, there is very little checking of this filename. Rogue administrators may be able to use this command to over-write almost any file on the system. And if those administrators have write access to radius.conf, they can do the same thing without radmin too. so like… the door was already open πŸ’€

πŸ’œ debug condition '(User-Name == "bob")'

Enable debugging output for all requests that match the condition. Any unlang condition is valid here.

The condition is parsed as a string, so it must be enclosed in single or double quotes. Strings enclosed in double-quotes must have back-slashes and the quotation marks escaped inside of the string. πŸŽ€

Only one debug condition can be active at a time. One. Periodt.

πŸ’œ debug condition '((User-Name == "bob") || (Packet-Src-IP-Address == 192.0.2.22))'

A more complex condition that enables debugging output for requests containing User-Name "bob", or requests that originate from source IP address 192.0.2.22. look at her go, she's doing boolean logic 😭πŸ”₯

πŸ’œ debug condition

Disable debug conditionals. bye bye debugging ✌️


🌈 FULL LIST OF COMMANDS 🌈

okay this is the big one, grab a snack πŸ“

  • add <command> β€” do sub-command of add
  • add client <command> β€” Add client configuration commands
  • add client file <filename> β€” Add new client definition from <filename>
  • debug <command> β€” debugging commands
  • debug condition [condition] β€” Enable debugging for requests matching [condition]
  • debug level <number> β€” Set debug level to <number>. Higher is more debugging. πŸ“ˆ
  • debug file [filename] β€” Send all debugging output to [filename]
  • del <command> β€” do sub-command of del
  • del client <command> β€” Delete client configuration commands
  • del client ipaddr <ipaddr> β€” Delete a dynamically created client
  • hup [module] β€” sends a HUP signal to the server, or optionally to one module
  • inject <command> β€” commands to inject packets into a running server
  • inject to <ipaddr> <port> β€” Inject packets to the destination IP and port.
  • inject from <ipaddr> β€” Inject packets as if they came from <ipaddr>
  • inject file <input-file> <output-file> β€” Inject packet from <input-file>, with results sent to <output-file>
  • reconnect β€” reconnect to a running server
  • terminate β€” terminates the server, and cause it to exit. (she said what she said πŸ’€)
  • set <command> β€” do sub-command of set
  • set module <command> β€” set module commands
  • set module config <module> variable value β€” set configuration for <module>
  • set module status [alive|dead] β€” set the module to be alive or dead (always return "fail")
  • set home_server <command> β€” set home server commands
  • set home_server state <ipaddr> <port> [alive|dead] β€” set state for given home server
  • show <command> β€” do sub-command of show
  • show client <command> β€” do sub-command of client
  • show client config <ipaddr> [udp|tcp] β€” shows configuration for a given client.
  • show client list β€” shows list of global clients
  • show debug <command> β€” show debug properties
  • show debug condition β€” Shows current debugging condition.
  • show debug level β€” Shows current debugging level.
  • show debug file β€” Shows current debugging file.
  • show home_server <command> β€” do sub-command of home_server
  • show home_server config <ipaddr> <port> β€” show configuration for given home server
  • show home_server list β€” shows list of home servers
  • show home_server state <ipaddr> <port> β€” shows state of given home server
  • show module <command> β€” do sub-command of module
  • show module config <module> β€” show configuration for given module
  • show module flags <module> β€” show other module properties
  • show module list β€” shows list of loaded modules
  • show module methods <module> β€” show sections where <module> may be used
  • show uptime β€” shows time at which server started
  • show version β€” Prints version of the running server
  • show xml <reference> β€” Prints out configuration as XML
  • stats <command> β€” do sub-command of stats
  • stats client [auth/acct] <ipaddr> β€” show statistics for given client, or for all clients (auth or acct)
  • stats home_server [<ipaddr>|auth|acct] <port> β€” show statistics for given home server (ipaddr and port), or for all home servers (auth or acct)
  • stats detail <filename> β€” show statistics for the given detail file

🧚 SEE ALSO 🧚

unlang(5), radiusd.conf(5), raddb/sites-available/control-socket β€” go read them, they're iconic πŸ‘‘


πŸ’– AUTHOR πŸ’–

Alan DeKok <aland@freeradius.org> β€” thank you for your service king 🫢


that's the whole page bestie, you ate it, you devoured, no crumbs πŸ’…βœ¨

this cutie was brought to you by RADMIN(8), dated 11 Mar 2019, and yes she's still serving looks πŸŽ€

πŸ“¦ where this page comes from