Fix sudoers_policy plugin options when sudoers_audit is not listed.
As of sudo 1.9.1 the sudoers file is opened by the audit plugin, not the policy plugin. As a result, plugin options set for sudoers_policy have no effect. If sudoers_policy has plugin options in sudo.conf and sudoers_audit is not listed, move the options to sudoers_audit so they will have an effect.
This commit is contained in:
@@ -72,6 +72,7 @@ plugin, the following configuration can be used.
|
|||||||
.nf
|
.nf
|
||||||
.sp
|
.sp
|
||||||
.RS 6n
|
.RS 6n
|
||||||
|
Plugin sudoers_audit sudoers.so
|
||||||
Plugin sudoers_policy sudoers.so
|
Plugin sudoers_policy sudoers.so
|
||||||
Plugin sudoers_io sudoers.so
|
Plugin sudoers_io sudoers.so
|
||||||
.RE
|
.RE
|
||||||
@@ -84,15 +85,27 @@ Starting with
|
|||||||
plugin in the
|
plugin in the
|
||||||
sudo.conf(@mansectform@)
|
sudo.conf(@mansectform@)
|
||||||
file.
|
file.
|
||||||
These arguments, if present, should be listed after the path to the plugin
|
Plugin arguments, if any, should be listed after the path to the plugin
|
||||||
(i.e., after
|
(i.e., after
|
||||||
\fIsudoers.so\fR).
|
\fIsudoers.so\fR).
|
||||||
|
The arguments are only effective for the plugin that opens (and parses) the
|
||||||
|
\fIsudoers\fR
|
||||||
|
file.
|
||||||
|
.PP
|
||||||
|
For
|
||||||
|
\fBsudo\fR
|
||||||
|
version 1.9.1 and higher, this is the
|
||||||
|
\fIsudoers_audit\fR
|
||||||
|
plugin.
|
||||||
|
For older versions, it is the
|
||||||
|
\fIsudoers_policy\fR
|
||||||
|
plugin.
|
||||||
Multiple arguments may be specified, separated by white space.
|
Multiple arguments may be specified, separated by white space.
|
||||||
For example:
|
For example:
|
||||||
.nf
|
.nf
|
||||||
.sp
|
.sp
|
||||||
.RS 6n
|
.RS 6n
|
||||||
Plugin sudoers_policy sudoers.so sudoers_mode=0400
|
Plugin sudoers_audit sudoers.so sudoers_mode=0400 error_recovery=false
|
||||||
.RE
|
.RE
|
||||||
.fi
|
.fi
|
||||||
.PP
|
.PP
|
||||||
|
@@ -69,6 +69,7 @@ to use the
|
|||||||
.Nm
|
.Nm
|
||||||
plugin, the following configuration can be used.
|
plugin, the following configuration can be used.
|
||||||
.Bd -literal -offset indent
|
.Bd -literal -offset indent
|
||||||
|
Plugin sudoers_audit sudoers.so
|
||||||
Plugin sudoers_policy sudoers.so
|
Plugin sudoers_policy sudoers.so
|
||||||
Plugin sudoers_io sudoers.so
|
Plugin sudoers_io sudoers.so
|
||||||
.Ed
|
.Ed
|
||||||
@@ -80,13 +81,25 @@ Starting with
|
|||||||
plugin in the
|
plugin in the
|
||||||
.Xr sudo.conf @mansectform@
|
.Xr sudo.conf @mansectform@
|
||||||
file.
|
file.
|
||||||
These arguments, if present, should be listed after the path to the plugin
|
Plugin arguments, if any, should be listed after the path to the plugin
|
||||||
(i.e., after
|
(i.e., after
|
||||||
.Pa sudoers.so ) .
|
.Pa sudoers.so ) .
|
||||||
|
The arguments are only effective for the plugin that opens (and parses) the
|
||||||
|
.Em sudoers
|
||||||
|
file.
|
||||||
|
.Pp
|
||||||
|
For
|
||||||
|
.Nm sudo
|
||||||
|
version 1.9.1 and higher, this is the
|
||||||
|
.Em sudoers_audit
|
||||||
|
plugin.
|
||||||
|
For older versions, it is the
|
||||||
|
.Em sudoers_policy
|
||||||
|
plugin.
|
||||||
Multiple arguments may be specified, separated by white space.
|
Multiple arguments may be specified, separated by white space.
|
||||||
For example:
|
For example:
|
||||||
.Bd -literal -offset indent
|
.Bd -literal -offset indent
|
||||||
Plugin sudoers_policy sudoers.so sudoers_mode=0400
|
Plugin sudoers_audit sudoers.so sudoers_mode=0400 error_recovery=false
|
||||||
.Ed
|
.Ed
|
||||||
.Pp
|
.Pp
|
||||||
The following plugin arguments are supported:
|
The following plugin arguments are supported:
|
||||||
|
@@ -532,8 +532,18 @@ sudo_load_plugins(struct plugin_container *policy_plugin,
|
|||||||
* loaded, load it too, if possible.
|
* loaded, load it too, if possible.
|
||||||
*/
|
*/
|
||||||
if (!plugin_exists(audit_plugins, "sudoers_audit")) {
|
if (!plugin_exists(audit_plugins, "sudoers_audit")) {
|
||||||
(void)sudo_load_sudoers_plugin("sudoers_audit", policy_plugin,
|
if (sudo_load_sudoers_plugin("sudoers_audit", policy_plugin,
|
||||||
io_plugins, audit_plugins, approval_plugins, true);
|
io_plugins, audit_plugins, approval_plugins, true)) {
|
||||||
|
/*
|
||||||
|
* Move the plugin options from sudoers_policy to sudoers_audit
|
||||||
|
* since the audit module is now what actually opens sudoers.
|
||||||
|
*/
|
||||||
|
if (policy_plugin->options != NULL) {
|
||||||
|
TAILQ_LAST(audit_plugins, plugin_container_list)->options =
|
||||||
|
policy_plugin->options;
|
||||||
|
policy_plugin->options = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user