Skip to main content
Version: 2.0.0 ๐Ÿšง

Operator privileges

Operator privileges grant exta abilities to operators, such as being able to use certain commands, view additional information, and set restricted server notice masks. These privileges are specified in class and/or operator blocks.

PrivilegeDescription
adminServer administrator (can set user mode +a, load/unload modules and see additional information).
apass_opmodeCan OPMODE and CLEARMODE commands on +A (admin) and +U (user) keys.
badchanCan set remote badchans (e.g. Gchans).
channel_privacyCan bypass channel privacy (i.e. see modes, keys, and lists).
chan_limitCan bypass max channel limits to join local channels.
chanservCan set user mode +k (cannot be deoped, kicked or killed) [cannot be set via configuration file].
checkCan use CHECK command.
closeCan use CLOSE command.
deop_lchanCannot be deoped or kicked on local channels.
dieCan use DIE command.
displayOperator status will be visible to others.
force_local_opmodeCan use OPMODE and CLEARMODE commands on quarantined local channels.
force_opmodeCan use OPMODE and CLEARMODE commands on quarantined global channels.
glineCan set remote G-lines.
hide_operCan set user mode +H (hidden oper).
jupeCan set remote Jupes.
killCan KILL (i.e. disconnect) remote clients.
list_chanCan see +s channels and modes with LIST command.
localOR propagate (with opposite sense), i.e. no == global operator.
local_badchanCan set local badchans.
local_glineCan set local G-lines.
local_jupeCan set local Jupes.
local_killCan KILL (i.e. disconnect) local clients.
local_opmodeCan use OPMODE and CLEARMODE commands on local channels.
local_shunCan set local Shuns.
mass_noticeCan send mass/masked messages/notices.
messageCan send through user mode +g (CallerID).
mode_lchanCan use MODE command on local channels without being a channel operator.
noidleCan set user mode +I (hide idle time).
opmodeCan use OPMODE and CLEARMODE commands.
paranoidCan set user mode +P (show WHOIS requests on them).
propagateGlobal operator (implied if local == no).
rehashCan use REHASH command.
remoteCan use remote-form of commands.
remoterehashCan use REHASH command remotely.
restartCan use RESTART command.
routeCan use CONNECT, SETTIME, SHEDDING and SQUIT commands.
routeinfoCan use ASLL, MAP, LINKS, RPING, TRACE and UPING commands, and set server notice mask +R.
routeuworldCan use SQUIT command on UWorld servers (also requires the route privilege).
see_chanCan see users in secret (+s) channels with WHO command.
see_opersCan see operator status for operators without the display privilege.
serverinfoCan use GET, HASH and STATS commands.
setCan use SET command to change feature settings.
show_all_invisCan see invisible users with WHO command.
show_invisCan see local invisible users with WHO command.
shunCan set remote Shuns.
unlimit_queryCan see additional results from WHO queries.
user_privacyCan bypass user privacy (e.g. see IP addresses, and channels they don't share in common).
walk_lchanCan use OVERRIDE flag to forcibly join local channels.
wallCan use WALLOPS and WALLUSERS commands.
whoxLog operator's use of WHOX.
wide_glineCan force setting of a wide G-line.
wide_shunCan force setting of a wide Shun.
xtraopCan set user mode +X (XtraOp) [cannot be set via configuration file].

Precedence#

Operator privileges are checked in the following order:

  1. The operator's operator block
  2. The operator's connection class
  3. The default value for a privilege

That is, the value of a privilege specified in an operator block will override those specified in a class block, while those specified in either operator or class blocks will override the default value for a privilege.

For example, consider the following configuration:

class {    name "Global";    /* ...other configuration... */    local = no;    user_privacy = no;}
operator {    name "Jane";    class "Global";    /* ...other configuration... */    user_privacy = yes;}

In the above example, connection class Global is for global operators (note the local privlege set to no), and disables the user_privacy privilege. Operator Jane has been assigned connection class Global making her a global operator; however, Jane will also be given the user_privacy privilege as it has been enabled within her operator block, even though it's disabled for her connection class. This is because the value of any privileges listed in her operator block will override those for the connection class.

Defaults#

Global operators#

Global operators (i.e. those with local = no or propagate = yes) receive all privileges by default except:

  • admin
  • apass_opmode
  • badchan
  • channel_privacy
  • chanserv
  • deop_lchan
  • die
  • force_local_opmode
  • gline
  • hide_oper
  • jupe
  • local_badchan
  • local_opmode
  • mass_notice
  • message
  • mode_lchan
  • rehash
  • remote
  • remoterehash
  • restart
  • routeuworld
  • set
  • shun
  • unlimit_query
  • user_privacy
  • walk_lchan
  • wide_gline
  • wide_shun
  • xtraop

Local operators#

Local operators (i.e. those with local = yes or propagate = no) get only these privileges by default:

  • chan_limit
  • display
  • local_gline
  • local_jupe
  • local_kill
  • rehash
  • show_all_invis
  • show_invis
  • whox
note

As mentioned above, these defaults can be overridden by class and operator blocks.