|
@@ -608,9 +608,19 @@ static int audit_netlink_ok(struct sk_buff *skb, u16 msg_type)
|
|
int err = 0;
|
|
int err = 0;
|
|
|
|
|
|
/* Only support the initial namespaces for now. */
|
|
/* Only support the initial namespaces for now. */
|
|
|
|
+ /*
|
|
|
|
+ * We return ECONNREFUSED because it tricks userspace into thinking
|
|
|
|
+ * that audit was not configured into the kernel. Lots of users
|
|
|
|
+ * configure their PAM stack (because that's what the distro does)
|
|
|
|
+ * to reject login if unable to send messages to audit. If we return
|
|
|
|
+ * ECONNREFUSED the PAM stack thinks the kernel does not have audit
|
|
|
|
+ * configured in and will let login proceed. If we return EPERM
|
|
|
|
+ * userspace will reject all logins. This should be removed when we
|
|
|
|
+ * support non init namespaces!!
|
|
|
|
+ */
|
|
if ((current_user_ns() != &init_user_ns) ||
|
|
if ((current_user_ns() != &init_user_ns) ||
|
|
(task_active_pid_ns(current) != &init_pid_ns))
|
|
(task_active_pid_ns(current) != &init_pid_ns))
|
|
- return -EPERM;
|
|
|
|
|
|
+ return -ECONNREFUSED;
|
|
|
|
|
|
switch (msg_type) {
|
|
switch (msg_type) {
|
|
case AUDIT_LIST:
|
|
case AUDIT_LIST:
|