OXIESEC PANEL
- Current Dir:
/
/
snap
/
certbot
/
4730
/
usr
/
share
/
augeas
/
lenses
/
dist
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
06/10/2025 09:51:14 PM
rwxr-xr-x
📄
access.aug
3.58 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
activemq_conf.aug
1.47 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
activemq_xml.aug
864 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
afs_cellalias.aug
1.56 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
aliases.aug
2.18 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
anaconda.aug
775 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
anacron.aug
2.49 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
approx.aug
1.26 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
apt_update_manager.aug
1.11 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
aptcacherngsecurity.aug
726 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
aptconf.aug
3.9 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
aptpreferences.aug
1.79 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
aptsources.aug
1.98 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
authinfo2.aug
1.44 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
authorized_keys.aug
1.84 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
authselectpam.aug
3.7 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
automaster.aug
3.31 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
automounter.aug
4.05 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
avahi.aug
1.38 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
backuppchosts.aug
1014 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
bbhosts.aug
4.24 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
bootconf.aug
3.65 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
build.aug
16.65 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
cachefilesd.aug
2 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
carbon.aug
1.54 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
ceph.aug
719 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
cgconfig.aug
3.37 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
cgrules.aug
2.38 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
channels.aug
3.84 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
chrony.aug
13.79 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
clamav.aug
1.72 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
cmdline.aug
506 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
cobblermodules.aug
398 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
cobblersettings.aug
2.24 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
cockpit.aug
1.96 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
collectd.aug
869 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
cpanel.aug
824 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
cron.aug
4.05 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
cron_user.aug
1.26 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
crypttab.aug
3.08 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
csv.aug
1.18 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
cups.aug
459 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
cyrus_imapd.aug
1.51 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
darkice.aug
773 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
debctrl.aug
3.61 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
desktop.aug
1.39 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
devfsrules.aug
619 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
device_map.aug
620 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
dhclient.aug
6.69 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
dhcpd.aug
20.88 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
dns_zone.aug
2.89 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
dnsmasq.aug
2.16 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
dovecot.aug
3.98 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
dpkg.aug
2.78 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
dput.aug
2.16 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
erlang.aug
4.33 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
ethers.aug
663 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
exports.aug
2.37 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
fai_diskconfig.aug
9.28 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
fail2ban.aug
1.79 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
fonts.aug
819 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
fstab.aug
1.23 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
fuse.aug
871 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
gdm.aug
1.8 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
getcap.aug
1.57 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
group.aug
1.66 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
grub.aug
11.05 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
grubenv.aug
508 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
gshadow.aug
2.19 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
gtkbookmarks.aug
855 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
host_conf.aug
1.9 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
hostname.aug
435 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
hosts.aug
485 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
hosts_access.aug
4.32 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
htpasswd.aug
1.02 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
httpd.aug
7.35 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
inetd.aug
6.22 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
inifile.aug
15.49 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
inittab.aug
780 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
inputrc.aug
1.62 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
interfaces.aug
4.62 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
iproute2.aug
323 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
iptables.aug
2.64 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
iscsid.aug
684 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
jaas.aug
1.57 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
jettyrealm.aug
1.52 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
jmxaccess.aug
1.35 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
jmxpassword.aug
1.34 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
json.aug
2.15 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
kdump.aug
3.06 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
keepalived.aug
10.73 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
known_hosts.aug
1.93 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
koji.aug
898 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
krb5.aug
6.98 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
ldif.aug
7.65 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
ldso.aug
1.06 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
lightdm.aug
1.75 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
limits.aug
2.02 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
login_defs.aug
615 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
logrotate.aug
4.23 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
logwatch.aug
1.44 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
lokkit.aug
2.16 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
lvm.aug
2.03 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
mailscanner.aug
1.66 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
mailscanner_rules.aug
2.84 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
masterpasswd.aug
4.36 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
mcollective.aug
1.09 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
mdadm_conf.aug
10.05 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
memcached.aug
1.24 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
mke2fs.aug
6.29 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
modprobe.aug
3.34 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
modules.aug
741 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
modules_conf.aug
1.04 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
mongodbserver.aug
1.17 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
monit.aug
2.13 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
multipath.aug
4.21 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
mysql.aug
1.95 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
nagioscfg.aug
2.09 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
nagiosobjects.aug
1.57 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
netmasks.aug
1.69 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
networkmanager.aug
2.18 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
networks.aug
1.09 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
nginx.aug
3.65 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
nrpe.aug
1.78 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
nslcd.aug
9.87 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
nsswitch.aug
2.33 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
ntp.aug
5.29 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
ntpd.aug
4.75 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
odbc.aug
1.42 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
opendkim.aug
3.1 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
openshift_config.aug
2.46 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
openshift_http.aug
1.03 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
openshift_quickstarts.aug
1.02 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
openvpn.aug
22.28 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
oz.aug
1.35 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
pagekite.aug
2.6 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
pam.aug
2.58 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
pamconf.aug
1.23 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
passwd.aug
3.52 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
pbuilder.aug
638 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
pg_hba.aug
2.97 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
pgbouncer.aug
1.43 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
php.aug
2.34 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
phpvars.aug
3.85 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
postfix_access.aug
771 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
postfix_main.aug
1.52 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
postfix_master.aug
1.9 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
postfix_passwordmap.aug
1.28 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
postfix_sasl_smtpd.aug
697 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
postfix_transport.aug
1.48 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
postfix_virtual.aug
1.32 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
postgresql.aug
2.1 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
properties.aug
2.3 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
protocols.aug
1.05 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
puppet.aug
1.52 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
puppet_auth.aug
1.95 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
puppetfile.aug
2.27 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
puppetfileserver.aug
3.12 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
pylonspaste.aug
2.3 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
pythonpaste.aug
1.99 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
qpid.aug
670 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
quote.aug
6.71 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
rabbitmq.aug
4.69 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
radicale.aug
1.48 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
rancid.aug
927 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
redis.aug
6.5 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
reprepro_uploaders.aug
5.47 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
resolv.aug
4.03 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
rhsm.aug
1.1 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
rmt.aug
788 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
rsyncd.aug
1.97 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
rsyslog.aug
3.27 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
rtadvd.aug
854 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
rx.aug
4.2 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
samba.aug
1.71 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
schroot.aug
1.79 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
securetty.aug
450 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
semanage.aug
1.02 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
sep.aug
1.28 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
services.aug
2.82 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
shadow.aug
2.35 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
shells.aug
745 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
shellvars.aug
12.02 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
shellvars_list.aug
1.74 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
simplelines.aug
1.13 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
simplevars.aug
1.4 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
sip_conf.aug
1.61 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
slapd.aug
5.2 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
smbusers.aug
781 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
solaris_system.aug
3.15 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
soma.aug
1.14 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
sos.aug
807 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
spacevars.aug
1.42 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
splunk.aug
1.64 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
squid.aug
15.95 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
ssh.aug
4.39 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
sshd.aug
4.74 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
sssd.aug
861 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
star.aug
941 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
strongswan.aug
1.63 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
stunnel.aug
2.21 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
subversion.aug
2.75 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
sudoers.aug
20.08 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
sysconfig.aug
2.49 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
sysconfig_route.aug
2.55 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
sysctl.aug
1.36 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
syslog.aug
7.33 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
systemd.aug
6 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
termcap.aug
1.03 KB
03/31/2024 05:41:49 PM
rw-r--r--
📁
tests
-
06/10/2025 09:51:14 PM
rwxr-xr-x
📄
thttpd.aug
1.31 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
tinc.aug
1.08 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
tmpfiles.aug
3.16 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
toml.aug
4.24 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
trapperkeeper.aug
4.01 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
tuned.aug
387 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
up2date.aug
2.21 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
updatedb.aug
1.13 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
util.aug
4.85 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
vfstab.aug
1.71 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
vmware_config.aug
702 bytes
03/31/2024 05:41:49 PM
rw-r--r--
📄
vsftpd.aug
2.72 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
webmin.aug
1.23 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
wine.aug
1.92 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
xendconfsxp.aug
1.07 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
xinetd.aug
4.02 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
xml.aug
6.33 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
xorg.aug
10.43 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
xymon.aug
2.26 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
xymon_alerting.aug
6.11 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
yaml.aug
1.54 KB
03/31/2024 05:41:49 PM
rw-r--r--
📄
yum.aug
2.19 KB
03/31/2024 05:41:49 PM
rw-r--r--
Editing: sudoers.aug
Close
(* 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