Linux ubuntu 6.8.0-90-generic #91-Ubuntu SMP PREEMPT_DYNAMIC Tue Nov 18 14:14:30 UTC 2025 x86_64
nginx/1.24.0
: 67.217.245.49 | : 216.73.216.153
Cant Read [ /etc/named.conf ]
8.3.6
www-data
Bypass.pw
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
Backdoor Scanner
Backdoor Create
Alfa Webshell
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
usr /
share /
augeas /
lenses /
dist /
[ HOME SHELL ]
Name
Size
Permission
Action
tests
[ DIR ]
drwxr-xr-x
access.aug
3.58
KB
-rw-r--r--
activemq_conf.aug
1.47
KB
-rw-r--r--
activemq_xml.aug
864
B
-rw-r--r--
afs_cellalias.aug
1.56
KB
-rw-r--r--
aliases.aug
2.18
KB
-rw-r--r--
anaconda.aug
775
B
-rw-r--r--
anacron.aug
2.49
KB
-rw-r--r--
approx.aug
1.26
KB
-rw-r--r--
apt_update_manager.aug
1.11
KB
-rw-r--r--
aptcacherngsecurity.aug
726
B
-rw-r--r--
aptconf.aug
3.9
KB
-rw-r--r--
aptpreferences.aug
1.79
KB
-rw-r--r--
aptsources.aug
1.98
KB
-rw-r--r--
authinfo2.aug
1.44
KB
-rw-r--r--
authorized_keys.aug
1.84
KB
-rw-r--r--
authselectpam.aug
3.7
KB
-rw-r--r--
automaster.aug
3.31
KB
-rw-r--r--
automounter.aug
4.05
KB
-rw-r--r--
avahi.aug
1.38
KB
-rw-r--r--
backuppchosts.aug
1014
B
-rw-r--r--
bbhosts.aug
4.24
KB
-rw-r--r--
bootconf.aug
3.65
KB
-rw-r--r--
build.aug
16.65
KB
-rw-r--r--
cachefilesd.aug
2
KB
-rw-r--r--
carbon.aug
1.54
KB
-rw-r--r--
ceph.aug
719
B
-rw-r--r--
cgconfig.aug
3.37
KB
-rw-r--r--
cgrules.aug
2.38
KB
-rw-r--r--
channels.aug
3.84
KB
-rw-r--r--
chrony.aug
13.79
KB
-rw-r--r--
clamav.aug
1.72
KB
-rw-r--r--
cmdline.aug
506
B
-rw-r--r--
cobblermodules.aug
398
B
-rw-r--r--
cobblersettings.aug
2.24
KB
-rw-r--r--
cockpit.aug
1.96
KB
-rw-r--r--
collectd.aug
869
B
-rw-r--r--
cpanel.aug
824
B
-rw-r--r--
cron.aug
4.05
KB
-rw-r--r--
cron_user.aug
1.26
KB
-rw-r--r--
crypttab.aug
3.08
KB
-rw-r--r--
csv.aug
1.18
KB
-rw-r--r--
cups.aug
459
B
-rw-r--r--
cyrus_imapd.aug
1.51
KB
-rw-r--r--
darkice.aug
773
B
-rw-r--r--
debctrl.aug
3.61
KB
-rw-r--r--
desktop.aug
1.39
KB
-rw-r--r--
devfsrules.aug
619
B
-rw-r--r--
device_map.aug
620
B
-rw-r--r--
dhclient.aug
6.69
KB
-rw-r--r--
dhcpd.aug
20.88
KB
-rw-r--r--
dns_zone.aug
2.89
KB
-rw-r--r--
dnsmasq.aug
2.16
KB
-rw-r--r--
dovecot.aug
3.98
KB
-rw-r--r--
dpkg.aug
2.78
KB
-rw-r--r--
dput.aug
2.16
KB
-rw-r--r--
erlang.aug
4.33
KB
-rw-r--r--
ethers.aug
663
B
-rw-r--r--
exports.aug
2.37
KB
-rw-r--r--
fai_diskconfig.aug
9.28
KB
-rw-r--r--
fail2ban.aug
1.79
KB
-rw-r--r--
fonts.aug
819
B
-rw-r--r--
fstab.aug
1.23
KB
-rw-r--r--
fuse.aug
871
B
-rw-r--r--
gdm.aug
1.8
KB
-rw-r--r--
getcap.aug
1.57
KB
-rw-r--r--
group.aug
1.66
KB
-rw-r--r--
grub.aug
11.05
KB
-rw-r--r--
grubenv.aug
508
B
-rw-r--r--
gshadow.aug
2.19
KB
-rw-r--r--
gtkbookmarks.aug
855
B
-rw-r--r--
host_conf.aug
1.9
KB
-rw-r--r--
hostname.aug
435
B
-rw-r--r--
hosts.aug
485
B
-rw-r--r--
hosts_access.aug
4.32
KB
-rw-r--r--
htpasswd.aug
1.02
KB
-rw-r--r--
httpd.aug
7.35
KB
-rw-r--r--
inetd.aug
6.22
KB
-rw-r--r--
inifile.aug
15.49
KB
-rw-r--r--
inittab.aug
780
B
-rw-r--r--
inputrc.aug
1.62
KB
-rw-r--r--
interfaces.aug
4.62
KB
-rw-r--r--
iproute2.aug
323
B
-rw-r--r--
iptables.aug
2.64
KB
-rw-r--r--
iscsid.aug
684
B
-rw-r--r--
jaas.aug
1.57
KB
-rw-r--r--
jettyrealm.aug
1.52
KB
-rw-r--r--
jmxaccess.aug
1.35
KB
-rw-r--r--
jmxpassword.aug
1.34
KB
-rw-r--r--
json.aug
2.15
KB
-rw-r--r--
kdump.aug
3.06
KB
-rw-r--r--
keepalived.aug
10.73
KB
-rw-r--r--
known_hosts.aug
1.93
KB
-rw-r--r--
koji.aug
898
B
-rw-r--r--
krb5.aug
6.98
KB
-rw-r--r--
ldif.aug
7.65
KB
-rw-r--r--
ldso.aug
1.06
KB
-rw-r--r--
lightdm.aug
1.75
KB
-rw-r--r--
limits.aug
2.02
KB
-rw-r--r--
login_defs.aug
615
B
-rw-r--r--
logrotate.aug
4.23
KB
-rw-r--r--
logwatch.aug
1.44
KB
-rw-r--r--
lokkit.aug
2.16
KB
-rw-r--r--
lvm.aug
2.03
KB
-rw-r--r--
mailscanner.aug
1.66
KB
-rw-r--r--
mailscanner_rules.aug
2.84
KB
-rw-r--r--
masterpasswd.aug
4.36
KB
-rw-r--r--
mcollective.aug
1.09
KB
-rw-r--r--
mdadm_conf.aug
10.05
KB
-rw-r--r--
memcached.aug
1.24
KB
-rw-r--r--
mke2fs.aug
6.29
KB
-rw-r--r--
modprobe.aug
3.34
KB
-rw-r--r--
modules.aug
741
B
-rw-r--r--
modules_conf.aug
1.04
KB
-rw-r--r--
mongodbserver.aug
1.17
KB
-rw-r--r--
monit.aug
2.13
KB
-rw-r--r--
multipath.aug
4.21
KB
-rw-r--r--
mysql.aug
1.95
KB
-rw-r--r--
nagioscfg.aug
2.09
KB
-rw-r--r--
nagiosobjects.aug
1.57
KB
-rw-r--r--
netmasks.aug
1.69
KB
-rw-r--r--
networkmanager.aug
2.18
KB
-rw-r--r--
networks.aug
1.09
KB
-rw-r--r--
nginx.aug
3.65
KB
-rw-r--r--
nrpe.aug
1.78
KB
-rw-r--r--
nslcd.aug
9.87
KB
-rw-r--r--
nsswitch.aug
2.33
KB
-rw-r--r--
ntp.aug
5.29
KB
-rw-r--r--
ntpd.aug
4.75
KB
-rw-r--r--
odbc.aug
1.42
KB
-rw-r--r--
opendkim.aug
3.1
KB
-rw-r--r--
openshift_config.aug
2.46
KB
-rw-r--r--
openshift_http.aug
1.03
KB
-rw-r--r--
openshift_quickstarts.aug
1.02
KB
-rw-r--r--
openvpn.aug
22.28
KB
-rw-r--r--
oz.aug
1.35
KB
-rw-r--r--
pagekite.aug
2.6
KB
-rw-r--r--
pam.aug
2.58
KB
-rw-r--r--
pamconf.aug
1.23
KB
-rw-r--r--
passwd.aug
3.52
KB
-rw-r--r--
pbuilder.aug
638
B
-rw-r--r--
pg_hba.aug
2.97
KB
-rw-r--r--
pgbouncer.aug
1.43
KB
-rw-r--r--
php.aug
2.34
KB
-rw-r--r--
phpvars.aug
3.85
KB
-rw-r--r--
postfix_access.aug
771
B
-rw-r--r--
postfix_main.aug
1.52
KB
-rw-r--r--
postfix_master.aug
1.9
KB
-rw-r--r--
postfix_passwordmap.aug
1.28
KB
-rw-r--r--
postfix_sasl_smtpd.aug
697
B
-rw-r--r--
postfix_transport.aug
1.48
KB
-rw-r--r--
postfix_virtual.aug
1.32
KB
-rw-r--r--
postgresql.aug
2.1
KB
-rw-r--r--
properties.aug
2.3
KB
-rw-r--r--
protocols.aug
1.05
KB
-rw-r--r--
puppet.aug
1.52
KB
-rw-r--r--
puppet_auth.aug
1.95
KB
-rw-r--r--
puppetfile.aug
2.27
KB
-rw-r--r--
puppetfileserver.aug
3.12
KB
-rw-r--r--
pylonspaste.aug
2.3
KB
-rw-r--r--
pythonpaste.aug
1.99
KB
-rw-r--r--
qpid.aug
670
B
-rw-r--r--
quote.aug
6.71
KB
-rw-r--r--
rabbitmq.aug
4.69
KB
-rw-r--r--
radicale.aug
1.48
KB
-rw-r--r--
rancid.aug
927
B
-rw-r--r--
redis.aug
6.5
KB
-rw-r--r--
reprepro_uploaders.aug
5.47
KB
-rw-r--r--
resolv.aug
4.03
KB
-rw-r--r--
rhsm.aug
1.1
KB
-rw-r--r--
rmt.aug
788
B
-rw-r--r--
rsyncd.aug
1.97
KB
-rw-r--r--
rsyslog.aug
3.27
KB
-rw-r--r--
rtadvd.aug
854
B
-rw-r--r--
rx.aug
4.2
KB
-rw-r--r--
samba.aug
1.71
KB
-rw-r--r--
schroot.aug
1.79
KB
-rw-r--r--
securetty.aug
450
B
-rw-r--r--
semanage.aug
1.02
KB
-rw-r--r--
sep.aug
1.28
KB
-rw-r--r--
services.aug
2.82
KB
-rw-r--r--
shadow.aug
2.35
KB
-rw-r--r--
shells.aug
745
B
-rw-r--r--
shellvars.aug
12.02
KB
-rw-r--r--
shellvars_list.aug
1.74
KB
-rw-r--r--
simplelines.aug
1.13
KB
-rw-r--r--
simplevars.aug
1.4
KB
-rw-r--r--
sip_conf.aug
1.61
KB
-rw-r--r--
slapd.aug
5.2
KB
-rw-r--r--
smbusers.aug
781
B
-rw-r--r--
solaris_system.aug
3.15
KB
-rw-r--r--
soma.aug
1.14
KB
-rw-r--r--
sos.aug
807
B
-rw-r--r--
spacevars.aug
1.42
KB
-rw-r--r--
splunk.aug
1.64
KB
-rw-r--r--
squid.aug
15.95
KB
-rw-r--r--
ssh.aug
4.39
KB
-rw-r--r--
sshd.aug
4.74
KB
-rw-r--r--
sssd.aug
861
B
-rw-r--r--
star.aug
941
B
-rw-r--r--
strongswan.aug
1.63
KB
-rw-r--r--
stunnel.aug
2.21
KB
-rw-r--r--
subversion.aug
2.75
KB
-rw-r--r--
sudoers.aug
20.08
KB
-rw-r--r--
sysconfig.aug
2.49
KB
-rw-r--r--
sysconfig_route.aug
2.55
KB
-rw-r--r--
sysctl.aug
1.36
KB
-rw-r--r--
syslog.aug
7.33
KB
-rw-r--r--
systemd.aug
6
KB
-rw-r--r--
termcap.aug
1.03
KB
-rw-r--r--
thttpd.aug
1.31
KB
-rw-r--r--
tinc.aug
1.08
KB
-rw-r--r--
tmpfiles.aug
3.16
KB
-rw-r--r--
toml.aug
4.24
KB
-rw-r--r--
trapperkeeper.aug
4.01
KB
-rw-r--r--
tuned.aug
387
B
-rw-r--r--
up2date.aug
2.21
KB
-rw-r--r--
updatedb.aug
1.13
KB
-rw-r--r--
util.aug
4.85
KB
-rw-r--r--
vfstab.aug
1.71
KB
-rw-r--r--
vmware_config.aug
702
B
-rw-r--r--
vsftpd.aug
2.72
KB
-rw-r--r--
webmin.aug
1.23
KB
-rw-r--r--
wine.aug
1.92
KB
-rw-r--r--
xendconfsxp.aug
1.07
KB
-rw-r--r--
xinetd.aug
4.02
KB
-rw-r--r--
xml.aug
6.33
KB
-rw-r--r--
xorg.aug
10.43
KB
-rw-r--r--
xymon.aug
2.26
KB
-rw-r--r--
xymon_alerting.aug
6.11
KB
-rw-r--r--
yaml.aug
1.54
KB
-rw-r--r--
yum.aug
2.19
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : sudoers.aug
(* Module: Sudoers Parses /etc/sudoers Author: Raphael Pinson <raphink@gmail.com> About: Reference This lens tries to keep as close as possible to `man sudoers` where possible. For example, recursive definitions such as > Cmnd_Spec_List ::= Cmnd_Spec | > Cmnd_Spec ',' Cmnd_Spec_List are replaced by > let cmnd_spec_list = cmnd_spec . ( sep_com . cmnd_spec )* since Augeas cannot deal with recursive definitions. The definitions from `man sudoers` are put as commentaries for reference throughout the file. More information can be found in the manual. About: License This file is licensed under the LGPL v2+, like the rest of Augeas. About: Lens Usage Sample usage of this lens in augtool * Set first Defaults to apply to the "LOCALNET" network alias > set /files/etc/sudoers/Defaults[1]/type "@LOCALNET" * List all user specifications applying explicitly to the "admin" Unix group > match /files/etc/sudoers/spec/user "%admin" * Remove the full 3rd user specification > rm /files/etc/sudoers/spec[3] About: Configuration files This lens applies to /etc/sudoers. See <filter>. *) module Sudoers = autoload xfm (************************************************************************ * Group: USEFUL PRIMITIVES *************************************************************************) (* Group: Generic primitives *) (* Variable: eol *) let eol = Util.eol (* Variable: indent *) let indent = Util.indent (* Group: Separators *) (* Variable: sep_spc *) let sep_spc = Sep.space (* Variable: sep_cont *) let sep_cont = Sep.cl_or_space (* Variable: sep_cont_opt *) let sep_cont_opt = Sep.cl_or_opt_space (* Variable: sep_cont_opt_build *) let sep_cont_opt_build (sep:string) = del (Rx.cl_or_opt_space . sep . Rx.cl_or_opt_space) (" " . sep . " ") (* Variable: sep_com *) let sep_com = sep_cont_opt_build "," (* Variable: sep_eq *) let sep_eq = sep_cont_opt_build "=" (* Variable: sep_col *) let sep_col = sep_cont_opt_build ":" (* Variable: sep_dquote *) let sep_dquote = Util.del_str "\"" (* Group: Negation expressions *) (************************************************************************ * View: del_negate * Delete an even number of '!' signs *************************************************************************) let del_negate = del /(!!)*/ "" (************************************************************************ * View: negate_node * Negation of boolean values for <defaults>. Accept one optional '!' * and produce a 'negate' node if there is one. *************************************************************************) let negate_node = [ del "!" "!" . label "negate" ] (************************************************************************ * View: negate_or_value * A <del_negate>, followed by either a negated key, or a key/value pair *************************************************************************) let negate_or_value (key:lens) (value:lens) = [ del_negate . (negate_node . key | key . value) ] (* Group: Stores *) (* Variable: sto_to_com_cmnd sto_to_com_cmnd does not begin or end with a space *) let sto_to_com_cmnd = del_negate . negate_node? . ( let alias = Rx.word - /(NO)?(PASSWD|EXEC|SETENV)/ in let non_alias = /[\/a-z]([^,:#()\n\\]|\\\\[=:,\\])*[^,=:#() \t\n\\]|[^,=:#() \t\n\\]/ in store (alias | non_alias)) (* Variable: sto_to_com There could be a \ in the middle of a command *) let sto_to_com = store /([^,=:#() \t\n\\][^,=:#()\n]*[^,=:#() \t\n\\])|[^,=:#() \t\n\\]/ (* Variable: sto_to_com_host *) let sto_to_com_host = store /[^,=:#() \t\n\\]+/ (* Variable: sto_to_com_user Escaped spaces and NIS domains and allowed*) let sto_to_com_user = let nis_re = /([A-Z]([-A-Z0-9]|(\\\\[ \t]))*+\\\\\\\\)/ in let user_re = /[%+@a-z]([-A-Za-z0-9._+]|(\\\\[ \t])|\\\\\\\\[A-Za-z0-9])*/ - /@include(dir)?/ in let alias_re = /[A-Z_]+/ in store ((nis_re? . user_re) | alias_re) (* Variable: to_com_chars *) let to_com_chars = /[^",=#() \t\n\\]+/ (* " relax emacs *) (* Variable: to_com_dquot *) let to_com_dquot = /"[^",=#()\n\\]+"/ (* " relax emacs *) (* Variable: sto_to_com_dquot *) let sto_to_com_dquot = store (to_com_chars|to_com_dquot) (* Variable: sto_to_com_col *) let sto_to_com_col = store to_com_chars (* Variable: sto_to_eq *) let sto_to_eq = store /[^,=:#() \t\n\\]+/ (* Variable: sto_to_spc *) let sto_to_spc = store /[^", \t\n\\]+|"[^", \t\n\\]+"/ (* Variable: sto_to_spc_no_dquote *) let sto_to_spc_no_dquote = store /[^",# \t\n\\]+/ (* " relax emacs *) (* Variable: sto_integer *) let sto_integer = store /-?[0-9]+/ (* Group: Comments and empty lines *) (* View: comment Map comments in "#comment" nodes *) let comment = let sto_to_eol = store (/([^ \t\n].*[^ \t\n]|[^ \t\n])/ - /include(dir)?.*/) in [ label "#comment" . del /[ \t]*#[ \t]*/ "# " . sto_to_eol . eol ] (* View: comment_eol Requires a space before the # *) let comment_eol = Util.comment_generic /[ \t]+#[ \t]*/ " # " (* View: comment_or_eol A <comment_eol> or <eol> *) let comment_or_eol = comment_eol | (del /([ \t]+#\n|[ \t]*\n)/ "\n") (* View: empty Map empty lines *) let empty = [ del /[ \t]*#?[ \t]*\n/ "\n" ] (* View: includedir *) let includedir = [ key /(#|@)include(dir)?/ . Sep.space . store Rx.fspath . eol ] (************************************************************************ * Group: ALIASES *************************************************************************) (************************************************************************ * View: alias_field * Generic alias field to gather all Alias definitions * * Definition: * > User_Alias ::= NAME '=' User_List * > Runas_Alias ::= NAME '=' Runas_List * > Host_Alias ::= NAME '=' Host_List * > Cmnd_Alias ::= NAME '=' Cmnd_List * * Parameters: * kw:string - the label string * sto:lens - the store lens *************************************************************************) let alias_field (kw:string) (sto:lens) = [ label kw . sto ] (* View: alias_list List of <alias_fields>, separated by commas *) let alias_list (kw:string) (sto:lens) = Build.opt_list (alias_field kw sto) sep_com (************************************************************************ * View: alias_name * Name of an <alias_entry_single> * * Definition: * > NAME ::= [A-Z]([A-Z][0-9]_)* *************************************************************************) let alias_name = [ label "name" . store /[A-Z][A-Z0-9_]*/ ] (************************************************************************ * View: alias_entry_single * Single <alias_entry>, named using <alias_name> and listing <alias_list> * * Definition: * > Alias_Type NAME = item1, item2, ... * * Parameters: * field:string - the field name, passed to <alias_list> * sto:lens - the store lens, passed to <alias_list> *************************************************************************) let alias_entry_single (field:string) (sto:lens) = [ label "alias" . alias_name . sep_eq . alias_list field sto ] (************************************************************************ * View: alias_entry * Alias entry, a list of comma-separated <alias_entry_single> fields * * Definition: * > Alias_Type NAME = item1, item2, item3 : NAME = item4, item5 * * Parameters: * kw:string - the alias keyword string * field:string - the field name, passed to <alias_entry_single> * sto:lens - the store lens, passed to <alias_entry_single> *************************************************************************) let alias_entry (kw:string) (field:string) (sto:lens) = [ indent . key kw . sep_cont . alias_entry_single field sto . ( sep_col . alias_entry_single field sto )* . comment_or_eol ] (* TODO: go further in user definitions *) (* View: user_alias User_Alias, see <alias_field> *) let user_alias = alias_entry "User_Alias" "user" sto_to_com (* View: runas_alias Run_Alias, see <alias_field> *) let runas_alias = alias_entry "Runas_Alias" "runas_user" sto_to_com (* View: host_alias Host_Alias, see <alias_field> *) let host_alias = alias_entry "Host_Alias" "host" sto_to_com (* View: cmnd_alias Cmnd_Alias, see <alias_field> *) let cmnd_alias = alias_entry "Cmnd_Alias" "command" sto_to_com_cmnd (************************************************************************ * View: alias * Every kind of Alias entry, * see <user_alias>, <runas_alias>, <host_alias> and <cmnd_alias> * * Definition: * > Alias ::= 'User_Alias' User_Alias (':' User_Alias)* | * > 'Runas_Alias' Runas_Alias (':' Runas_Alias)* | * > 'Host_Alias' Host_Alias (':' Host_Alias)* | * > 'Cmnd_Alias' Cmnd_Alias (':' Cmnd_Alias)* *************************************************************************) let alias = user_alias | runas_alias | host_alias | cmnd_alias (************************************************************************ * Group: DEFAULTS *************************************************************************) (************************************************************************ * View: default_type * Type definition for <defaults> * * Definition: * > Default_Type ::= 'Defaults' | * > 'Defaults' '@' Host_List | * > 'Defaults' ':' User_List | * > 'Defaults' '!' Cmnd_List | * > 'Defaults' '>' Runas_List *************************************************************************) let default_type = let value = store /[@:!>][^ \t\n\\]+/ in [ label "type" . value ] (************************************************************************ * View: parameter_flag * A flag parameter for <defaults> * * Flags are implicitly boolean and can be turned off via the '!' operator. * Some integer, string and list parameters may also be used in a boolean * context to disable them. *************************************************************************) let parameter_flag_kw = "always_set_home" | "authenticate" | "env_editor" | "env_reset" | "fqdn" | "ignore_dot" | "ignore_local_sudoers" | "insults" | "log_host" | "log_year" | "long_otp_prompt" | "mail_always" | "mail_badpass" | "mail_no_host" | "mail_no_perms" | "mail_no_user" | "noexec" | "path_info" | "passprompt_override" | "preserve_groups" | "requiretty" | "root_sudo" | "rootpw" | "runaspw" | "set_home" | "set_logname" | "setenv" | "shell_noargs" | "stay_setuid" | "targetpw" | "tty_tickets" | "visiblepw" | "closefrom_override" | "closefrom_override" | "compress_io" | "fast_glob" | "log_input" | "log_output" | "pwfeedback" | "umask_override" | "use_pty" | "match_group_by_gid" | "always_query_group_plugin" let parameter_flag = [ del_negate . negate_node? . key parameter_flag_kw ] (************************************************************************ * View: parameter_integer * An integer parameter for <defaults> *************************************************************************) let parameter_integer_nobool_kw = "passwd_tries" let parameter_integer_nobool = [ key parameter_integer_nobool_kw . sep_eq . del /"?/ "" . sto_integer . del /"?/ "" ] let parameter_integer_bool_kw = "loglinelen" | "passwd_timeout" | "timestamp_timeout" | "umask" let parameter_integer_bool = negate_or_value (key parameter_integer_bool_kw) (sep_eq . del /"?/ "" . sto_integer . del /"?/ "") let parameter_integer = parameter_integer_nobool | parameter_integer_bool (************************************************************************ * View: parameter_string * A string parameter for <defaults> * * An odd number of '!' operators negate the value of the item; * an even number just cancel each other out. *************************************************************************) let parameter_string_nobool_kw = "badpass_message" | "editor" | "mailsub" | "noexec_file" | "passprompt" | "runas_default" | "syslog_badpri" | "syslog_goodpri" | "timestampdir" | "timestampowner" | "secure_path" let parameter_string_nobool = [ key parameter_string_nobool_kw . sep_eq . sto_to_com_dquot ] let parameter_string_bool_kw = "exempt_group" | "lecture" | "lecture_file" | "listpw" | "logfile" | "mailerflags" | "mailerpath" | "mailto" | "mailfrom" | "syslog" | "verifypw" let parameter_string_bool = negate_or_value (key parameter_string_bool_kw) (sep_eq . sto_to_com_dquot) let parameter_string = parameter_string_nobool | parameter_string_bool (************************************************************************ * View: parameter_lists * A single list parameter for <defaults> * * All lists can be used in a boolean context * The argument may be a double-quoted, space-separated list or a single * value without double-quotes. * The list can be replaced, added to, deleted from, or disabled * by using the =, +=, -=, and ! operators respectively. * An odd number of '!' operators negate the value of the item; * an even number just cancel each other out. *************************************************************************) let parameter_lists_kw = "env_check" | "env_delete" | "env_keep" let parameter_lists_value = [ label "var" . sto_to_spc_no_dquote ] let parameter_lists_value_dquote = [ label "var" . del /"?/ "" . sto_to_spc_no_dquote . del /"?/ "" ] let parameter_lists_values = parameter_lists_value_dquote | ( sep_dquote . parameter_lists_value . ( sep_cont . parameter_lists_value )+ . sep_dquote ) let parameter_lists_sep = sep_cont_opt . ( [ del "+" "+" . label "append" ] | [ del "-" "-" . label "remove" ] )? . del "=" "=" . sep_cont_opt let parameter_lists = negate_or_value (key parameter_lists_kw) (parameter_lists_sep . parameter_lists_values) (************************************************************************ * View: parameter * A single parameter for <defaults> * * Definition: * > Parameter ::= Parameter '=' Value | * > Parameter '+=' Value | * > Parameter '-=' Value | * > '!'* Parameter * * Parameters may be flags, integer values, strings, or lists. * *************************************************************************) let parameter = parameter_flag | parameter_integer | parameter_string | parameter_lists (************************************************************************ * View: parameter_list * A list of comma-separated <parameters> for <defaults> * * Definition: * > Parameter_List ::= Parameter | * > Parameter ',' Parameter_List *************************************************************************) let parameter_list = parameter . ( sep_com . parameter )* (************************************************************************ * View: defaults * A Defaults entry * * Definition: * > Default_Entry ::= Default_Type Parameter_List *************************************************************************) let defaults = [ indent . key "Defaults" . default_type? . sep_cont . parameter_list . comment_or_eol ] (************************************************************************ * Group: USER SPECIFICATION *************************************************************************) (************************************************************************ * View: runas_spec * A runas specification for <spec>, using <alias_list> for listing * users and/or groups used to run a command * * Definition: * > Runas_Spec ::= '(' Runas_List ')' | * > '(:' Runas_List ')' | * > '(' Runas_List ':' Runas_List ')' *************************************************************************) let runas_spec_user = alias_list "runas_user" sto_to_com let runas_spec_group = Util.del_str ":" . indent . alias_list "runas_group" sto_to_com let runas_spec_usergroup = runas_spec_user . indent . runas_spec_group let runas_spec = Util.del_str "(" . (runas_spec_user | runas_spec_group | runas_spec_usergroup ) . Util.del_str ")" . sep_cont_opt (************************************************************************ * View: tag_spec * Tag specification for <spec> * * Definition: * > Tag_Spec ::= ('NOPASSWD:' | 'PASSWD:' | 'NOEXEC:' | 'EXEC:' | * > 'SETENV:' | 'NOSETENV:') *************************************************************************) let tag_spec = [ label "tag" . store /(NO)?(PASSWD|EXEC|SETENV)/ . sep_col ] (************************************************************************ * View: cmnd_spec * Command specification for <spec>, * with optional <runas_spec> and any amount of <tag_specs> * * Definition: * > Cmnd_Spec ::= Runas_Spec? Tag_Spec* Cmnd *************************************************************************) let cmnd_spec = [ label "command" . runas_spec? . tag_spec* . sto_to_com_cmnd ] (************************************************************************ * View: cmnd_spec_list * A list of comma-separated <cmnd_specs> * * Definition: * > Cmnd_Spec_List ::= Cmnd_Spec | * > Cmnd_Spec ',' Cmnd_Spec_List *************************************************************************) let cmnd_spec_list = Build.opt_list cmnd_spec sep_com (************************************************************************ * View: spec_list * Group of hosts with <cmnd_spec_list> *************************************************************************) let spec_list = [ label "host_group" . alias_list "host" sto_to_com_host . sep_eq . cmnd_spec_list ] (************************************************************************ * View: spec * A user specification, listing colon-separated <spec_lists> * * Definition: * > User_Spec ::= User_List Host_List '=' Cmnd_Spec_List \ * > (':' Host_List '=' Cmnd_Spec_List)* *************************************************************************) let spec = [ label "spec" . indent . alias_list "user" sto_to_com_user . sep_cont . Build.opt_list spec_list sep_col . comment_or_eol ] (************************************************************************ * Group: LENS & FILTER *************************************************************************) (* View: lns The sudoers lens, any amount of * <empty> lines * <comments> * <includedirs> * <aliases> * <defaults> * <specs> *) let lns = ( empty | comment | includedir | alias | defaults | spec )* (* View: filter *) let filter = (incl "/etc/sudoers") . (incl "/usr/local/etc/sudoers") . (incl "/etc/sudoers.d/*") . (incl "/usr/local/etc/sudoers.d/*") . (incl "/opt/csw/etc/sudoers") . (incl "/etc/opt/csw/sudoers") . Util.stdexcl let xfm = transform lns filter
Close