Policy:Proposals/3
Proposal #3 - Operator privilege sets
Written by culex
Oper privilege sets =================== Ops team gets no special mention -- they're just server admins. "dev" means developer of the respective codebase; so "dev" in the section for evo only means "developers of evo". "All devs" is used instead to refer to all developers with an O:line. IRCd ---- All-caps privileges are privs that have no configuration file option; they must be granted through services instead. ## oper * local = no; implies: ** whox = yes [This is only about LOGGING /whox, which we should always do] ** display = yes ** chan_limit = yes ** mode_lchan = yes [We should disable local channels anyway, nobody cares] ** deop_lchan = yes [see above] ** show_invis = yes ** show_all_invis = yes ** local_kill = yes ** local_gline = no [local bans make everything a bigger pain] ** see_chan = yes [*override* to no] ** list_chan = yes [*override* to no] ** wide_gline = yes [*override* to no] ** see_opers = yes ** local_opmode = yes [*override* to no; local channels should be disabled] ** force_local_opmode = yes [*override* to no; see above] ** kill = yes [even though it's just a pretty useless toy] ** opmode = yes [Fixing opless channels, etc.] ## support (global oper + support, not support oper, which is a services thing) These are privileges required to help without joining all the time (which, given some entry hazards, can be quite annoying). This has also the additional effect that all opers will strive to get into support team for the extra privs and thus everyone gets better support. [inherits from oper] * see_chan = yes * list_chan = yes * unlimit_query = yes [removes all brakes in /who with the other privs above] ## server admin [inherits from oper] * admin = yes [allows /shedding, /whois, see bind IP in /stats p] * set = yes [to be used at request of EB and infra only] * rehash = yes * die = yes * restart = yes ## all devs [inherits from oper] ## infra [inherits from oper] * remoterehash = yes * jupe = yes * local_jupe = yes ## EB [inherits from admin + infra] (special abilities granted by umode +N: unkillable by non-services, /shedding if not +a already) ## unused * hide_oper [given by infra or EB on request if they have a valid reason why they want to use +H] * gline [use evo instead, it's easier to track] * shun [see above] * zline, wide_zline, local_zline [glines are good enough] * XTRA_OPER [after setting +X, allows overriding JOIN, KICK, KILL (even against +k users!), MODE -o (+k user here), PRIVMSG/NOTICE despite modes against sending being present; way too dangerous for no use scenario] * CHANSERV [can set +k on self; too dangerous for no use scenario] * badchan, local_badchan [use evo] evo --- Curly braces mean that I'm requesting a level change via modcmd; the levels in the reference list are the defaults. ADD* commands have their respectice DEL* command not listed unless the level differs. 1000 is the max level, given to the first account. Apparently we have some more opers with level 1000, though. 1000 SHOULD denote "do not use" and 999 means EB-only. Command -> OpServ level reference: ACCESS 0 ADDALERT 800 ADDALERT NOTICE 800 ADDALERT [ACTION] 900 ADDBAD 800 [channels matching *word* get forbidden] ADDBADCHAN 600 {901} ADDEXEMPT 800 [channels to never consider forbidden for C] ADDTRUST 800 [irrelevant, we use newserv for that in dn2] BAN 100 {600} [can be done with opmode and +b anyway] BLOCK 100 {600} [equivalent of qakill with optional duration] CHANINFO 0 {700} CLEARBANS 300 {600} [can be done with opmode, etc.] CLEARMODES 400 {600} [opmode etc.] CLONE 999 {1000} COLLIDE 800 {900} CSEARCH 100 {700} DEHOP 100 {600} DEHOPALL 400 {600} DEOP 100 {600} DEOPALL 400 {600} DEVOICE 300 {600} [wtf is up with that default being higher?] DEVOICEALL 300 {600} DIE 999 DUMP 999 {1000} EDITTRUST 800 [irrelevant, see ADDTRUST] GAG 600 [services ignore] GLINE 600 GSYNC 600 GTRACE 100 HOP 100 {600} HOPALL 100 {600} INVITE 100 {700} INVITEME 100 {999} [invites to the debug channel, not sure if used] JOIN 601 {900} JUMP 900 JUPE 900 {800} KICK 100 {600} [could be done with opmode + /kick anyway] FORCEKICK 900 KICKALL 400 {600} KICKBAN 100 {600} KICKBANALL 450 {600} LOG 900 {400} MODE 100 {600} OP 100 {600} OPALL 400 {600} PART 601 {900} QUERY 0 [gets config value] {100} RAW 999 {1000} RECONNECT 900 REFRESHG 600 REFRESHS 600 REHASH 900 REOPEN 900 RESERVE 800 {999} RESTART 900 SBLOCK 100 [qakill/BLOCK with SHUN] {600} SET 900 SETTIME 901 {999} SHUN 600 SSYNC 600 STATS [STAT] 0 STRACE 100 SVSJOIN 999 SVSNICK 999 TRACE 100 {600} TRACE GLINE 600 TRACE GAG 600 TRACE KILL 600 UNBAN 100 {600} VOICE 300 {600} VOICEALL 300 {600} WARN 800 [adds join/part spam checker, I think] {600} WHOIS 0 {700 due to showing +s channels} C + OpServ levels: CREATENOTE/REMOVENOTE 800 {600} * oper, admin, all devs: 600 * support: 700 * infra: 800 * dev: 900 * EB: 999 Newserv NOperserv ----------------- The flags on NOperserv are quite unprecise, lots of stuff assigned to +o. I'll probably need to sort this out and fix the distribution. Flags: s -> staff (< oper) o -> oper t -> access to trust modification functions S -> security team (we have none though) +S affects d -> newserv developer Y -> relay bot (O -> opered up) (A -> has account on NOperserv, even if no flags) (X -> anyone at all) Command reference (only for modules I think MAY use): s -> splitlist o -> channel, lsmod, chanopstat, chanoplist, chanfix, showregs, chansearch, chanstats, channelhistogram, userhistogram, clonehistogram, chanhistogram, kill, kick, spewchan, spew, compare, broadcast, obroadcast, mbroadcast, sbroadcast, cbroadcast, deluser, fakeuser, fakelist, fakekill, nickwatch, listnumerics, patrol{join,part,list}, regexgline and related, serverlist, the trust stuff t -> (empty, what the fuck) S -> (empty) d -> status, relink, die, insmod, rmmod, rehash, reload, cfdebug, cfhistogram, cfsample, cfexpire, cfsave, cfload, chanprofiles, expirecheck, inslua, rmlua, reloadlua, chanstatssave, lslua, forcegc, dumptree, usercount, settime Y -> (empty, we use none of the modules that make use of it) O -> whois, listusers, hello, splitdel A -> showcommands, userflags, noticeflags X -> help * oper, admin, all devs: +ots * dev: +otsd * EB: +otsSd