xref: /vim-8.2.3635/runtime/syntax/sudoers.vim (revision dad4473f)
11cd871b5SBram Moolenaar" Vim syntax file
242eeac35SBram Moolenaar" Language:             sudoers(5) configuration files
3*dad4473fSBram Moolenaar" Maintainer:           Eisuke Kawashima ( e.kawaschima+vim AT gmail.com )
4214641f7SBram Moolenaar" Previous Maintainer:  Nikolai Weibull <[email protected]>
5*dad4473fSBram Moolenaar" Latest Revision:      2021 Mar 15
6a9604e61SBram Moolenaar" Recent Changes:	Support for #include and #includedir.
7fc65cabbSBram Moolenaar" 			Added many new options (Samuel D. Leslie)
81cd871b5SBram Moolenaar
942eeac35SBram Moolenaarif exists("b:current_syntax")
101cd871b5SBram Moolenaar  finish
111cd871b5SBram Moolenaarendif
121cd871b5SBram Moolenaar
1342eeac35SBram Moolenaarlet s:cpo_save = &cpo
1442eeac35SBram Moolenaarset cpo&vim
1542eeac35SBram Moolenaar
161cd871b5SBram Moolenaar" TODO: instead of 'skipnl', we would like to match a specific group that would
171cd871b5SBram Moolenaar" match \\$ and then continue with the nextgroup, actually, the skipnl doesn't
181cd871b5SBram Moolenaar" work...
191cd871b5SBram Moolenaar" TODO: treat 'ALL' like a special (yay, a bundle of new rules!!!)
201cd871b5SBram Moolenaar
211cd871b5SBram Moolenaarsyn match   sudoersUserSpec '^' nextgroup=@sudoersUserInSpec skipwhite
221cd871b5SBram Moolenaar
231cd871b5SBram Moolenaarsyn match   sudoersSpecEquals         contained '=' nextgroup=@sudoersCmndSpecList skipwhite
241cd871b5SBram Moolenaar
251cd871b5SBram Moolenaarsyn cluster sudoersCmndSpecList       contains=sudoersUserRunasBegin,sudoersPASSWD,@sudoersCmndInSpec
261cd871b5SBram Moolenaar
271cd871b5SBram Moolenaarsyn keyword sudoersTodo               contained TODO FIXME XXX NOTE
281cd871b5SBram Moolenaar
290dc065eeSBram Moolenaarsyn region  sudoersComment            display oneline start='#' end='$' contains=sudoersTodo
30*dad4473fSBram Moolenaarsyn region  sudoersInclude            display oneline start='[#@]\%(include\|includedir\)\>' end='$'
311cd871b5SBram Moolenaar
321cd871b5SBram Moolenaarsyn keyword sudoersAlias              User_Alias Runas_Alias nextgroup=sudoersUserAlias skipwhite skipnl
331cd871b5SBram Moolenaarsyn keyword sudoersAlias              Host_Alias nextgroup=sudoersHostAlias skipwhite skipnl
341cd871b5SBram Moolenaarsyn keyword sudoersAlias              Cmnd_Alias nextgroup=sudoersCmndAlias skipwhite skipnl
351cd871b5SBram Moolenaar
361cd871b5SBram Moolenaarsyn match   sudoersUserAlias          contained '\<\u[A-Z0-9_]*\>'  nextgroup=sudoersUserAliasEquals  skipwhite skipnl
371cd871b5SBram Moolenaarsyn match   sudoersUserNameInList     contained '\<\l\+\>'          nextgroup=@sudoersUserList        skipwhite skipnl
381cd871b5SBram Moolenaarsyn match   sudoersUIDInList          contained '#\d\+\>'           nextgroup=@sudoersUserList        skipwhite skipnl
391cd871b5SBram Moolenaarsyn match   sudoersGroupInList        contained '%\l\+\>'           nextgroup=@sudoersUserList        skipwhite skipnl
401cd871b5SBram Moolenaarsyn match   sudoersUserNetgroupInList contained '+\l\+\>'           nextgroup=@sudoersUserList        skipwhite skipnl
411cd871b5SBram Moolenaarsyn match   sudoersUserAliasInList    contained '\<\u[A-Z0-9_]*\>'  nextgroup=@sudoersUserList        skipwhite skipnl
421cd871b5SBram Moolenaar
431cd871b5SBram Moolenaarsyn match   sudoersUserName           contained '\<\l\+\>'          nextgroup=@sudoersParameter       skipwhite skipnl
441cd871b5SBram Moolenaarsyn match   sudoersUID                contained '#\d\+\>'           nextgroup=@sudoersParameter       skipwhite skipnl
451cd871b5SBram Moolenaarsyn match   sudoersGroup              contained '%\l\+\>'           nextgroup=@sudoersParameter       skipwhite skipnl
461cd871b5SBram Moolenaarsyn match   sudoersUserNetgroup       contained '+\l\+\>'           nextgroup=@sudoersParameter       skipwhite skipnl
471cd871b5SBram Moolenaarsyn match   sudoersUserAliasRef       contained '\<\u[A-Z0-9_]*\>'  nextgroup=@sudoersParameter       skipwhite skipnl
481cd871b5SBram Moolenaar
491cd871b5SBram Moolenaarsyn match   sudoersUserNameInSpec     contained '\<\l\+\>'          nextgroup=@sudoersUserSpec        skipwhite skipnl
501cd871b5SBram Moolenaarsyn match   sudoersUIDInSpec          contained '#\d\+\>'           nextgroup=@sudoersUserSpec        skipwhite skipnl
511cd871b5SBram Moolenaarsyn match   sudoersGroupInSpec        contained '%\l\+\>'           nextgroup=@sudoersUserSpec        skipwhite skipnl
521cd871b5SBram Moolenaarsyn match   sudoersUserNetgroupInSpec contained '+\l\+\>'           nextgroup=@sudoersUserSpec        skipwhite skipnl
531cd871b5SBram Moolenaarsyn match   sudoersUserAliasInSpec    contained '\<\u[A-Z0-9_]*\>'  nextgroup=@sudoersUserSpec        skipwhite skipnl
541cd871b5SBram Moolenaar
551cd871b5SBram Moolenaarsyn match   sudoersUserNameInRunas    contained '\<\l\+\>'          nextgroup=@sudoersUserRunas       skipwhite skipnl
561cd871b5SBram Moolenaarsyn match   sudoersUIDInRunas         contained '#\d\+\>'           nextgroup=@sudoersUserRunas       skipwhite skipnl
571cd871b5SBram Moolenaarsyn match   sudoersGroupInRunas       contained '%\l\+\>'           nextgroup=@sudoersUserRunas       skipwhite skipnl
581cd871b5SBram Moolenaarsyn match   sudoersUserNetgroupInRunas contained '+\l\+\>'          nextgroup=@sudoersUserRunas       skipwhite skipnl
591cd871b5SBram Moolenaarsyn match   sudoersUserAliasInRunas   contained '\<\u[A-Z0-9_]*\>'  nextgroup=@sudoersUserRunas       skipwhite skipnl
601cd871b5SBram Moolenaar
611cd871b5SBram Moolenaarsyn match   sudoersHostAlias          contained '\<\u[A-Z0-9_]*\>'  nextgroup=sudoersHostAliasEquals  skipwhite skipnl
621cd871b5SBram Moolenaarsyn match   sudoersHostNameInList     contained '\<\l\+\>'          nextgroup=@sudoersHostList        skipwhite skipnl
631cd871b5SBram Moolenaarsyn match   sudoersIPAddrInList       contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}' nextgroup=@sudoersHostList skipwhite skipnl
641cd871b5SBram Moolenaarsyn match   sudoersNetworkInList      contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}\%(/\%(\%(\d\{1,3}\.\)\{3}\d\{1,3}\|\d\+\)\)\=' nextgroup=@sudoersHostList skipwhite skipnl
651cd871b5SBram Moolenaarsyn match   sudoersHostNetgroupInList contained '+\l\+\>'           nextgroup=@sudoersHostList        skipwhite skipnl
661cd871b5SBram Moolenaarsyn match   sudoersHostAliasInList    contained '\<\u[A-Z0-9_]*\>'  nextgroup=@sudoersHostList        skipwhite skipnl
671cd871b5SBram Moolenaar
681cd871b5SBram Moolenaarsyn match   sudoersHostName           contained '\<\l\+\>'          nextgroup=@sudoersParameter       skipwhite skipnl
691cd871b5SBram Moolenaarsyn match   sudoersIPAddr             contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}' nextgroup=@sudoersParameter skipwhite skipnl
701cd871b5SBram Moolenaarsyn match   sudoersNetwork            contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}\%(/\%(\%(\d\{1,3}\.\)\{3}\d\{1,3}\|\d\+\)\)\=' nextgroup=@sudoersParameter skipwhite skipnl
711cd871b5SBram Moolenaarsyn match   sudoersHostNetgroup       contained '+\l\+\>'           nextgroup=@sudoersParameter       skipwhite skipnl
721cd871b5SBram Moolenaarsyn match   sudoersHostAliasRef       contained '\<\u[A-Z0-9_]*\>'  nextgroup=@sudoersParameter       skipwhite skipnl
731cd871b5SBram Moolenaar
741cd871b5SBram Moolenaarsyn match   sudoersHostNameInSpec     contained '\<\l\+\>'          nextgroup=@sudoersHostSpec        skipwhite skipnl
751cd871b5SBram Moolenaarsyn match   sudoersIPAddrInSpec       contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}' nextgroup=@sudoersHostSpec skipwhite skipnl
761cd871b5SBram Moolenaarsyn match   sudoersNetworkInSpec      contained '\%(\d\{1,3}\.\)\{3}\d\{1,3}\%(/\%(\%(\d\{1,3}\.\)\{3}\d\{1,3}\|\d\+\)\)\=' nextgroup=@sudoersHostSpec skipwhite skipnl
771cd871b5SBram Moolenaarsyn match   sudoersHostNetgroupInSpec contained '+\l\+\>'           nextgroup=@sudoersHostSpec        skipwhite skipnl
781cd871b5SBram Moolenaarsyn match   sudoersHostAliasInSpec    contained '\<\u[A-Z0-9_]*\>'  nextgroup=@sudoersHostSpec        skipwhite skipnl
791cd871b5SBram Moolenaar
801cd871b5SBram Moolenaarsyn match   sudoersCmndAlias          contained '\<\u[A-Z0-9_]*\>'  nextgroup=sudoersCmndAliasEquals  skipwhite skipnl
811cd871b5SBram Moolenaarsyn match   sudoersCmndNameInList     contained '[^[:space:],:=\\]\+\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=@sudoersCmndList,sudoersCommandEmpty,sudoersCommandArgs skipwhite
821cd871b5SBram Moolenaarsyn match   sudoersCmndAliasInList    contained '\<\u[A-Z0-9_]*\>'  nextgroup=@sudoersCmndList        skipwhite skipnl
831cd871b5SBram Moolenaar
841cd871b5SBram Moolenaarsyn match   sudoersCmndNameInSpec     contained '[^[:space:],:=\\]\+\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=@sudoersCmndSpec,sudoersCommandEmptyInSpec,sudoersCommandArgsInSpec skipwhite
851cd871b5SBram Moolenaarsyn match   sudoersCmndAliasInSpec    contained '\<\u[A-Z0-9_]*\>'  nextgroup=@sudoersCmndSpec        skipwhite skipnl
861cd871b5SBram Moolenaar
871cd871b5SBram Moolenaarsyn match   sudoersUserAliasEquals  contained '=' nextgroup=@sudoersUserInList  skipwhite skipnl
881cd871b5SBram Moolenaarsyn match   sudoersUserListComma    contained ',' nextgroup=@sudoersUserInList  skipwhite skipnl
891cd871b5SBram Moolenaarsyn match   sudoersUserListColon    contained ':' nextgroup=sudoersUserAlias    skipwhite skipnl
901cd871b5SBram Moolenaarsyn cluster sudoersUserList         contains=sudoersUserListComma,sudoersUserListColon
911cd871b5SBram Moolenaar
921cd871b5SBram Moolenaarsyn match   sudoersUserSpecComma    contained ',' nextgroup=@sudoersUserInSpec  skipwhite skipnl
931cd871b5SBram Moolenaarsyn cluster sudoersUserSpec         contains=sudoersUserSpecComma,@sudoersHostInSpec
941cd871b5SBram Moolenaar
951cd871b5SBram Moolenaarsyn match   sudoersUserRunasBegin   contained '(' nextgroup=@sudoersUserInRunas skipwhite skipnl
961cd871b5SBram Moolenaarsyn match   sudoersUserRunasComma   contained ',' nextgroup=@sudoersUserInRunas skipwhite skipnl
971cd871b5SBram Moolenaarsyn match   sudoersUserRunasEnd     contained ')' nextgroup=sudoersPASSWD,@sudoersCmndInSpec skipwhite skipnl
981cd871b5SBram Moolenaarsyn cluster sudoersUserRunas        contains=sudoersUserRunasComma,@sudoersUserInRunas,sudoersUserRunasEnd
991cd871b5SBram Moolenaar
1001cd871b5SBram Moolenaar
1011cd871b5SBram Moolenaarsyn match   sudoersHostAliasEquals  contained '=' nextgroup=@sudoersHostInList  skipwhite skipnl
1021cd871b5SBram Moolenaarsyn match   sudoersHostListComma    contained ',' nextgroup=@sudoersHostInList  skipwhite skipnl
1031cd871b5SBram Moolenaarsyn match   sudoersHostListColon    contained ':' nextgroup=sudoersHostAlias    skipwhite skipnl
1041cd871b5SBram Moolenaarsyn cluster sudoersHostList         contains=sudoersHostListComma,sudoersHostListColon
1051cd871b5SBram Moolenaar
1061cd871b5SBram Moolenaarsyn match   sudoersHostSpecComma    contained ',' nextgroup=@sudoersHostInSpec  skipwhite skipnl
1071cd871b5SBram Moolenaarsyn cluster sudoersHostSpec         contains=sudoersHostSpecComma,sudoersSpecEquals
1081cd871b5SBram Moolenaar
1091cd871b5SBram Moolenaar
1101cd871b5SBram Moolenaarsyn match   sudoersCmndAliasEquals  contained '=' nextgroup=@sudoersCmndInList  skipwhite skipnl
1111cd871b5SBram Moolenaarsyn match   sudoersCmndListComma    contained ',' nextgroup=@sudoersCmndInList  skipwhite skipnl
1121cd871b5SBram Moolenaarsyn match   sudoersCmndListColon    contained ':' nextgroup=sudoersCmndAlias    skipwhite skipnl
1131cd871b5SBram Moolenaarsyn cluster sudoersCmndList         contains=sudoersCmndListComma,sudoersCmndListColon
1141cd871b5SBram Moolenaar
1151cd871b5SBram Moolenaarsyn match   sudoersCmndSpecComma    contained ',' nextgroup=@sudoersCmndSpecList skipwhite skipnl
1161cd871b5SBram Moolenaarsyn match   sudoersCmndSpecColon    contained ':' nextgroup=@sudoersUserInSpec  skipwhite skipnl
1171cd871b5SBram Moolenaarsyn cluster sudoersCmndSpec         contains=sudoersCmndSpecComma,sudoersCmndSpecColon
1181cd871b5SBram Moolenaar
1191cd871b5SBram Moolenaarsyn cluster sudoersUserInList       contains=sudoersUserNegationInList,sudoersUserNameInList,sudoersUIDInList,sudoersGroupInList,sudoersUserNetgroupInList,sudoersUserAliasInList
1201cd871b5SBram Moolenaarsyn cluster sudoersHostInList       contains=sudoersHostNegationInList,sudoersHostNameInList,sudoersIPAddrInList,sudoersNetworkInList,sudoersHostNetgroupInList,sudoersHostAliasInList
1211cd871b5SBram Moolenaarsyn cluster sudoersCmndInList       contains=sudoersCmndNegationInList,sudoersCmndNameInList,sudoersCmndAliasInList
1221cd871b5SBram Moolenaar
1231cd871b5SBram Moolenaarsyn cluster sudoersUser             contains=sudoersUserNegation,sudoersUserName,sudoersUID,sudoersGroup,sudoersUserNetgroup,sudoersUserAliasRef
1241cd871b5SBram Moolenaarsyn cluster sudoersHost             contains=sudoersHostNegation,sudoersHostName,sudoersIPAddr,sudoersNetwork,sudoersHostNetgroup,sudoersHostAliasRef
1251cd871b5SBram Moolenaar
1261cd871b5SBram Moolenaarsyn cluster sudoersUserInSpec       contains=sudoersUserNegationInSpec,sudoersUserNameInSpec,sudoersUIDInSpec,sudoersGroupInSpec,sudoersUserNetgroupInSpec,sudoersUserAliasInSpec
1271cd871b5SBram Moolenaarsyn cluster sudoersHostInSpec       contains=sudoersHostNegationInSpec,sudoersHostNameInSpec,sudoersIPAddrInSpec,sudoersNetworkInSpec,sudoersHostNetgroupInSpec,sudoersHostAliasInSpec
1281cd871b5SBram Moolenaarsyn cluster sudoersUserInRunas      contains=sudoersUserNegationInRunas,sudoersUserNameInRunas,sudoersUIDInRunas,sudoersGroupInRunas,sudoersUserNetgroupInRunas,sudoersUserAliasInRunas
1291cd871b5SBram Moolenaarsyn cluster sudoersCmndInSpec       contains=sudoersCmndNegationInSpec,sudoersCmndNameInSpec,sudoersCmndAliasInSpec
1301cd871b5SBram Moolenaar
1311cd871b5SBram Moolenaarsyn match   sudoersUserNegationInList contained '!\+' nextgroup=@sudoersUserInList  skipwhite skipnl
1321cd871b5SBram Moolenaarsyn match   sudoersHostNegationInList contained '!\+' nextgroup=@sudoersHostInList  skipwhite skipnl
1331cd871b5SBram Moolenaarsyn match   sudoersCmndNegationInList contained '!\+' nextgroup=@sudoersCmndInList  skipwhite skipnl
1341cd871b5SBram Moolenaar
1351cd871b5SBram Moolenaarsyn match   sudoersUserNegation       contained '!\+' nextgroup=@sudoersUser        skipwhite skipnl
1361cd871b5SBram Moolenaarsyn match   sudoersHostNegation       contained '!\+' nextgroup=@sudoersHost        skipwhite skipnl
1371cd871b5SBram Moolenaar
1381cd871b5SBram Moolenaarsyn match   sudoersUserNegationInSpec contained '!\+' nextgroup=@sudoersUserInSpec  skipwhite skipnl
1391cd871b5SBram Moolenaarsyn match   sudoersHostNegationInSpec contained '!\+' nextgroup=@sudoersHostInSpec  skipwhite skipnl
1401cd871b5SBram Moolenaarsyn match   sudoersUserNegationInRunas contained '!\+' nextgroup=@sudoersUserInRunas skipwhite skipnl
1411cd871b5SBram Moolenaarsyn match   sudoersCmndNegationInSpec contained '!\+' nextgroup=@sudoersCmndInSpec  skipwhite skipnl
1421cd871b5SBram Moolenaar
1431cd871b5SBram Moolenaarsyn match   sudoersCommandArgs      contained '[^[:space:],:=\\]\+\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=sudoersCommandArgs,@sudoersCmndList skipwhite
1441cd871b5SBram Moolenaarsyn match   sudoersCommandEmpty     contained '""' nextgroup=@sudoersCmndList skipwhite skipnl
1451cd871b5SBram Moolenaar
1461cd871b5SBram Moolenaarsyn match   sudoersCommandArgsInSpec contained '[^[:space:],:=\\]\+\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=sudoersCommandArgsInSpec,@sudoersCmndSpec skipwhite
1471cd871b5SBram Moolenaarsyn match   sudoersCommandEmptyInSpec contained '""' nextgroup=@sudoersCmndSpec skipwhite skipnl
1481cd871b5SBram Moolenaar
1491cd871b5SBram Moolenaarsyn keyword sudoersDefaultEntry Defaults nextgroup=sudoersDefaultTypeAt,sudoersDefaultTypeColon,sudoersDefaultTypeGreaterThan,@sudoersParameter skipwhite skipnl
1501cd871b5SBram Moolenaarsyn match   sudoersDefaultTypeAt          contained '@' nextgroup=@sudoersHost skipwhite skipnl
1511cd871b5SBram Moolenaarsyn match   sudoersDefaultTypeColon       contained ':' nextgroup=@sudoersUser skipwhite skipnl
1521cd871b5SBram Moolenaarsyn match   sudoersDefaultTypeGreaterThan contained '>' nextgroup=@sudoersUser skipwhite skipnl
1531cd871b5SBram Moolenaar
1541cd871b5SBram Moolenaar" TODO: could also deal with special characters here
15542eeac35SBram Moolenaarsyn match   sudoersBooleanParameter contained '!' nextgroup=sudoersBooleanParameter skipwhite skipnl
1560065402fSBram Moolenaarsyn keyword sudoersBooleanParameter contained skipwhite skipnl
157fc65cabbSBram Moolenaar                                  \ always_query_group_plugin
1580065402fSBram Moolenaar                                  \ always_set_home
1590065402fSBram Moolenaar                                  \ authenticate
1600065402fSBram Moolenaar                                  \ closefrom_override
161fc65cabbSBram Moolenaar                                  \ compress_io
1620065402fSBram Moolenaar                                  \ env_editor
1630065402fSBram Moolenaar                                  \ env_reset
164fc65cabbSBram Moolenaar                                  \ exec_background
165fc65cabbSBram Moolenaar                                  \ fast_glob
1660065402fSBram Moolenaar                                  \ fqdn
167fc65cabbSBram Moolenaar                                  \ ignore_audit_errors
1680065402fSBram Moolenaar                                  \ ignore_dot
169fc65cabbSBram Moolenaar                                  \ ignore_iolog_errors
1700065402fSBram Moolenaar                                  \ ignore_local_sudoers
171fc65cabbSBram Moolenaar                                  \ ignore_logfile_errors
172fc65cabbSBram Moolenaar                                  \ ignore_unknown_defaults
1730065402fSBram Moolenaar                                  \ insults
1740065402fSBram Moolenaar                                  \ log_host
175fc65cabbSBram Moolenaar                                  \ log_input
176fc65cabbSBram Moolenaar                                  \ log_output
1770065402fSBram Moolenaar                                  \ log_year
1780065402fSBram Moolenaar                                  \ long_otp_prompt
179fc65cabbSBram Moolenaar                                  \ mail_all_cmnds
1800065402fSBram Moolenaar                                  \ mail_always
1810065402fSBram Moolenaar                                  \ mail_badpass
1820065402fSBram Moolenaar                                  \ mail_no_host
1830065402fSBram Moolenaar                                  \ mail_no_perms
1840065402fSBram Moolenaar                                  \ mail_no_user
185fc65cabbSBram Moolenaar                                  \ match_group_by_gid
186fc65cabbSBram Moolenaar                                  \ netgroup_tuple
1870065402fSBram Moolenaar                                  \ noexec
188fc65cabbSBram Moolenaar                                  \ pam_session
189fc65cabbSBram Moolenaar                                  \ pam_setcred
1900065402fSBram Moolenaar                                  \ passprompt_override
191fc65cabbSBram Moolenaar                                  \ path_info
1920065402fSBram Moolenaar                                  \ preserve_groups
193fc65cabbSBram Moolenaar                                  \ pwfeedback
1940065402fSBram Moolenaar                                  \ requiretty
1950065402fSBram Moolenaar                                  \ root_sudo
1960065402fSBram Moolenaar                                  \ rootpw
1970065402fSBram Moolenaar                                  \ runaspw
1980065402fSBram Moolenaar                                  \ set_home
1990065402fSBram Moolenaar                                  \ set_logname
200fc65cabbSBram Moolenaar                                  \ set_utmp
2010065402fSBram Moolenaar                                  \ setenv
2020065402fSBram Moolenaar                                  \ shell_noargs
2030065402fSBram Moolenaar                                  \ stay_setuid
204fc65cabbSBram Moolenaar                                  \ sudoedit_checkdir
205*dad4473fSBram Moolenaar                                  \ sudoedit_follow
206fc65cabbSBram Moolenaar                                  \ syslog_pid
2070065402fSBram Moolenaar                                  \ targetpw
2080065402fSBram Moolenaar                                  \ tty_tickets
209fc65cabbSBram Moolenaar                                  \ umask_override
210fc65cabbSBram Moolenaar                                  \ use_netgroups
211fc65cabbSBram Moolenaar                                  \ use_pty
212fc65cabbSBram Moolenaar                                  \ user_command_timeouts
213fc65cabbSBram Moolenaar                                  \ utmp_runas
2140065402fSBram Moolenaar                                  \ visiblepw
2150065402fSBram Moolenaar
2160065402fSBram Moolenaarsyn keyword sudoersIntegerParameter contained
2170065402fSBram Moolenaar                                  \ nextgroup=sudoersIntegerParameterEquals
2180065402fSBram Moolenaar                                  \ skipwhite skipnl
2190065402fSBram Moolenaar                                  \ closefrom
220fc65cabbSBram Moolenaar                                  \ command_timeout
2210065402fSBram Moolenaar                                  \ loglinelen
222fc65cabbSBram Moolenaar                                  \ maxseq
2230065402fSBram Moolenaar                                  \ passwd_timeout
224fc65cabbSBram Moolenaar                                  \ passwd_tries
225fc65cabbSBram Moolenaar                                  \ syslog_maxlen
2260065402fSBram Moolenaar                                  \ timestamp_timeout
2270065402fSBram Moolenaar                                  \ umask
2280065402fSBram Moolenaar
2290065402fSBram Moolenaarsyn keyword sudoersStringParameter  contained
2300065402fSBram Moolenaar                                  \ nextgroup=sudoersStringParameterEquals
2310065402fSBram Moolenaar                                  \ skipwhite skipnl
232fc65cabbSBram Moolenaar                                  \ askpass
2330065402fSBram Moolenaar                                  \ badpass_message
2340065402fSBram Moolenaar                                  \ editor
2350065402fSBram Moolenaar                                  \ env_file
2360065402fSBram Moolenaar                                  \ exempt_group
237fc65cabbSBram Moolenaar                                  \ fdexec
238fc65cabbSBram Moolenaar                                  \ group_plugin
239fc65cabbSBram Moolenaar                                  \ iolog_dir
240fc65cabbSBram Moolenaar                                  \ iolog_file
241fc65cabbSBram Moolenaar                                  \ iolog_flush
242fc65cabbSBram Moolenaar                                  \ iolog_group
243fc65cabbSBram Moolenaar                                  \ iolog_mode
244fc65cabbSBram Moolenaar                                  \ iolog_user
2450065402fSBram Moolenaar                                  \ lecture
2460065402fSBram Moolenaar                                  \ lecture_file
247fc65cabbSBram Moolenaar                                  \ lecture_status_dir
2480065402fSBram Moolenaar                                  \ listpw
2490065402fSBram Moolenaar                                  \ logfile
2500065402fSBram Moolenaar                                  \ mailerflags
2510065402fSBram Moolenaar                                  \ mailerpath
2520065402fSBram Moolenaar                                  \ mailfrom
253fc65cabbSBram Moolenaar                                  \ mailsub
2540065402fSBram Moolenaar                                  \ mailto
255fc65cabbSBram Moolenaar                                  \ noexec_file
256fc65cabbSBram Moolenaar                                  \ pam_login_service
257fc65cabbSBram Moolenaar                                  \ pam_service
258fc65cabbSBram Moolenaar                                  \ passprompt
259fc65cabbSBram Moolenaar                                  \ restricted_env_file
260fc65cabbSBram Moolenaar                                  \ role
261fc65cabbSBram Moolenaar                                  \ runas_default
2620065402fSBram Moolenaar                                  \ secure_path
263fc65cabbSBram Moolenaar                                  \ sudoers_locale
2640065402fSBram Moolenaar                                  \ syslog
265fc65cabbSBram Moolenaar                                  \ syslog_badpri
266fc65cabbSBram Moolenaar                                  \ syslog_goodpri
267fc65cabbSBram Moolenaar                                  \ timestamp_type
268fc65cabbSBram Moolenaar                                  \ timestampdir
269fc65cabbSBram Moolenaar                                  \ timestampowner
270fc65cabbSBram Moolenaar                                  \ type
2710065402fSBram Moolenaar                                  \ verifypw
2720065402fSBram Moolenaar
2730065402fSBram Moolenaarsyn keyword sudoersListParameter    contained
2740065402fSBram Moolenaar                                  \ nextgroup=sudoersListParameterEquals
2750065402fSBram Moolenaar                                  \ skipwhite skipnl
2760065402fSBram Moolenaar                                  \ env_check
2770065402fSBram Moolenaar                                  \ env_delete
2780065402fSBram Moolenaar                                  \ env_keep
2791cd871b5SBram Moolenaar
2801cd871b5SBram Moolenaarsyn match   sudoersParameterListComma contained ',' nextgroup=@sudoersParameter skipwhite skipnl
2811cd871b5SBram Moolenaar
282446cb837SBram Moolenaarsyn cluster sudoersParameter        contains=sudoersBooleanParameter,sudoersIntegerParameter,sudoersStringParameter,sudoersListParameter
2831cd871b5SBram Moolenaar
2841cd871b5SBram Moolenaarsyn match   sudoersIntegerParameterEquals contained '[+-]\==' nextgroup=sudoersIntegerValue skipwhite skipnl
2851cd871b5SBram Moolenaarsyn match   sudoersStringParameterEquals  contained '[+-]\==' nextgroup=sudoersStringValue  skipwhite skipnl
2861cd871b5SBram Moolenaarsyn match   sudoersListParameterEquals    contained '[+-]\==' nextgroup=sudoersListValue    skipwhite skipnl
2871cd871b5SBram Moolenaar
2881cd871b5SBram Moolenaarsyn match   sudoersIntegerValue contained '\d\+' nextgroup=sudoersParameterListComma skipwhite skipnl
2891cd871b5SBram Moolenaarsyn match   sudoersStringValue  contained '[^[:space:],:=\\]*\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=sudoersParameterListComma skipwhite skipnl
2901cd871b5SBram Moolenaarsyn region  sudoersStringValue  contained start=+"+ skip=+\\"+ end=+"+ nextgroup=sudoersParameterListComma skipwhite skipnl
2911cd871b5SBram Moolenaarsyn match   sudoersListValue    contained '[^[:space:],:=\\]*\%(\\[[:space:],:=\\][^[:space:],:=\\]*\)*' nextgroup=sudoersParameterListComma skipwhite skipnl
2921cd871b5SBram Moolenaarsyn region  sudoersListValue    contained start=+"+ skip=+\\"+ end=+"+ nextgroup=sudoersParameterListComma skipwhite skipnl
2931cd871b5SBram Moolenaar
2941cd871b5SBram Moolenaarsyn match   sudoersPASSWD                   contained '\%(NO\)\=PASSWD:' nextgroup=@sudoersCmndInSpec skipwhite
2951cd871b5SBram Moolenaar
29642eeac35SBram Moolenaarhi def link sudoersSpecEquals               Operator
29742eeac35SBram Moolenaarhi def link sudoersTodo                     Todo
29842eeac35SBram Moolenaarhi def link sudoersComment                  Comment
29942eeac35SBram Moolenaarhi def link sudoersAlias                    Keyword
30042eeac35SBram Moolenaarhi def link sudoersUserAlias                Identifier
30142eeac35SBram Moolenaarhi def link sudoersUserNameInList           String
30242eeac35SBram Moolenaarhi def link sudoersUIDInList                Number
30342eeac35SBram Moolenaarhi def link sudoersGroupInList              PreProc
30442eeac35SBram Moolenaarhi def link sudoersUserNetgroupInList       PreProc
30542eeac35SBram Moolenaarhi def link sudoersUserAliasInList          PreProc
30642eeac35SBram Moolenaarhi def link sudoersUserName                 String
30742eeac35SBram Moolenaarhi def link sudoersUID                      Number
30842eeac35SBram Moolenaarhi def link sudoersGroup                    PreProc
30942eeac35SBram Moolenaarhi def link sudoersUserNetgroup             PreProc
31042eeac35SBram Moolenaarhi def link sudoersUserAliasRef             PreProc
31142eeac35SBram Moolenaarhi def link sudoersUserNameInSpec           String
31242eeac35SBram Moolenaarhi def link sudoersUIDInSpec                Number
31342eeac35SBram Moolenaarhi def link sudoersGroupInSpec              PreProc
31442eeac35SBram Moolenaarhi def link sudoersUserNetgroupInSpec       PreProc
31542eeac35SBram Moolenaarhi def link sudoersUserAliasInSpec          PreProc
31642eeac35SBram Moolenaarhi def link sudoersUserNameInRunas          String
31742eeac35SBram Moolenaarhi def link sudoersUIDInRunas               Number
31842eeac35SBram Moolenaarhi def link sudoersGroupInRunas             PreProc
31942eeac35SBram Moolenaarhi def link sudoersUserNetgroupInRunas      PreProc
32042eeac35SBram Moolenaarhi def link sudoersUserAliasInRunas         PreProc
32142eeac35SBram Moolenaarhi def link sudoersHostAlias                Identifier
32242eeac35SBram Moolenaarhi def link sudoersHostNameInList           String
32342eeac35SBram Moolenaarhi def link sudoersIPAddrInList             Number
32442eeac35SBram Moolenaarhi def link sudoersNetworkInList            Number
32542eeac35SBram Moolenaarhi def link sudoersHostNetgroupInList       PreProc
32642eeac35SBram Moolenaarhi def link sudoersHostAliasInList          PreProc
32742eeac35SBram Moolenaarhi def link sudoersHostName                 String
32842eeac35SBram Moolenaarhi def link sudoersIPAddr                   Number
32942eeac35SBram Moolenaarhi def link sudoersNetwork                  Number
33042eeac35SBram Moolenaarhi def link sudoersHostNetgroup             PreProc
33142eeac35SBram Moolenaarhi def link sudoersHostAliasRef             PreProc
33242eeac35SBram Moolenaarhi def link sudoersHostNameInSpec           String
33342eeac35SBram Moolenaarhi def link sudoersIPAddrInSpec             Number
33442eeac35SBram Moolenaarhi def link sudoersNetworkInSpec            Number
33542eeac35SBram Moolenaarhi def link sudoersHostNetgroupInSpec       PreProc
33642eeac35SBram Moolenaarhi def link sudoersHostAliasInSpec          PreProc
33742eeac35SBram Moolenaarhi def link sudoersCmndAlias                Identifier
33842eeac35SBram Moolenaarhi def link sudoersCmndNameInList           String
33942eeac35SBram Moolenaarhi def link sudoersCmndAliasInList          PreProc
34042eeac35SBram Moolenaarhi def link sudoersCmndNameInSpec           String
34142eeac35SBram Moolenaarhi def link sudoersCmndAliasInSpec          PreProc
34242eeac35SBram Moolenaarhi def link sudoersUserAliasEquals          Operator
34342eeac35SBram Moolenaarhi def link sudoersUserListComma            Delimiter
34442eeac35SBram Moolenaarhi def link sudoersUserListColon            Delimiter
34542eeac35SBram Moolenaarhi def link sudoersUserSpecComma            Delimiter
34642eeac35SBram Moolenaarhi def link sudoersUserRunasBegin           Delimiter
34742eeac35SBram Moolenaarhi def link sudoersUserRunasComma           Delimiter
34842eeac35SBram Moolenaarhi def link sudoersUserRunasEnd             Delimiter
34942eeac35SBram Moolenaarhi def link sudoersHostAliasEquals          Operator
35042eeac35SBram Moolenaarhi def link sudoersHostListComma            Delimiter
35142eeac35SBram Moolenaarhi def link sudoersHostListColon            Delimiter
35242eeac35SBram Moolenaarhi def link sudoersHostSpecComma            Delimiter
35342eeac35SBram Moolenaarhi def link sudoersCmndAliasEquals          Operator
35442eeac35SBram Moolenaarhi def link sudoersCmndListComma            Delimiter
35542eeac35SBram Moolenaarhi def link sudoersCmndListColon            Delimiter
35642eeac35SBram Moolenaarhi def link sudoersCmndSpecComma            Delimiter
35742eeac35SBram Moolenaarhi def link sudoersCmndSpecColon            Delimiter
35842eeac35SBram Moolenaarhi def link sudoersUserNegationInList       Operator
35942eeac35SBram Moolenaarhi def link sudoersHostNegationInList       Operator
36042eeac35SBram Moolenaarhi def link sudoersCmndNegationInList       Operator
36142eeac35SBram Moolenaarhi def link sudoersUserNegation             Operator
36242eeac35SBram Moolenaarhi def link sudoersHostNegation             Operator
36342eeac35SBram Moolenaarhi def link sudoersUserNegationInSpec       Operator
36442eeac35SBram Moolenaarhi def link sudoersHostNegationInSpec       Operator
36542eeac35SBram Moolenaarhi def link sudoersUserNegationInRunas      Operator
36642eeac35SBram Moolenaarhi def link sudoersCmndNegationInSpec       Operator
36742eeac35SBram Moolenaarhi def link sudoersCommandArgs              String
36842eeac35SBram Moolenaarhi def link sudoersCommandEmpty             Special
36942eeac35SBram Moolenaarhi def link sudoersDefaultEntry             Keyword
37042eeac35SBram Moolenaarhi def link sudoersDefaultTypeAt            Special
37142eeac35SBram Moolenaarhi def link sudoersDefaultTypeColon         Special
37242eeac35SBram Moolenaarhi def link sudoersDefaultTypeGreaterThan   Special
37342eeac35SBram Moolenaarhi def link sudoersBooleanParameter         Identifier
37442eeac35SBram Moolenaarhi def link sudoersIntegerParameter         Identifier
37542eeac35SBram Moolenaarhi def link sudoersStringParameter          Identifier
37642eeac35SBram Moolenaarhi def link sudoersListParameter            Identifier
37742eeac35SBram Moolenaarhi def link sudoersParameterListComma       Delimiter
37842eeac35SBram Moolenaarhi def link sudoersIntegerParameterEquals   Operator
37942eeac35SBram Moolenaarhi def link sudoersStringParameterEquals    Operator
38042eeac35SBram Moolenaarhi def link sudoersListParameterEquals      Operator
38142eeac35SBram Moolenaarhi def link sudoersIntegerValue             Number
38242eeac35SBram Moolenaarhi def link sudoersStringValue              String
38342eeac35SBram Moolenaarhi def link sudoersListValue                String
38442eeac35SBram Moolenaarhi def link sudoersPASSWD                   Special
385a9604e61SBram Moolenaarhi def link sudoersInclude                  Statement
3861cd871b5SBram Moolenaar
3871cd871b5SBram Moolenaarlet b:current_syntax = "sudoers"
3881cd871b5SBram Moolenaar
38942eeac35SBram Moolenaarlet &cpo = s:cpo_save
39042eeac35SBram Moolenaarunlet s:cpo_save
391