diff mbox series

[4/4] python/audit2allow: allow using audit2why as non-root user

Message ID 20181221204333.27445-4-nicolas.iooss@m4x.org (mailing list archive)
State Not Applicable
Headers show
Series [1/4] python/sepolgen: close /etc/selinux/sepolgen.conf after parsing it | expand

Commit Message

Nicolas Iooss Dec. 21, 2018, 8:43 p.m. UTC
Importing sepolicy as non-root on a system with SELinux causes the
following exception to be raised:

    ValueError: No SELinux Policy installed

Ignore this when using audit2why, which allows using it with option
--policy as a non-root user.

Signed-off-by: Nicolas Iooss <nicolas.iooss@m4x.org>
---
 python/audit2allow/audit2allow | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

Comments

Petr Lautrbach Jan. 7, 2019, 11:57 a.m. UTC | #1
Nicolas Iooss <nicolas.iooss@m4x.org> writes:

> Importing sepolicy as non-root on a system with SELinux causes the
> following exception to be raised:
>
>     ValueError: No SELinux Policy installed
>
> Ignore this when using audit2why, which allows using it with option
> --policy as a non-root user.
>
> Signed-off-by: Nicolas Iooss <nicolas.iooss@m4x.org>

All 4 merged. Thanks!

> ---
>  python/audit2allow/audit2allow | 11 ++++++++---
>  1 file changed, 8 insertions(+), 3 deletions(-)
>
> diff --git a/python/audit2allow/audit2allow b/python/audit2allow/audit2allow
> index 195f151c6ca1..18fe0a531d02 100644
> --- a/python/audit2allow/audit2allow
> +++ b/python/audit2allow/audit2allow
> @@ -242,7 +242,10 @@ class AuditToPolicy:
>  
>      def __output_audit2why(self):
>          import selinux
> -        import sepolicy
> +        try:
> +            import sepolicy
> +        except (ImportError, ValueError):
> +            sepolicy = None
>          for i in self.__parser.avc_msgs:
>              rc = i.type
>              data = i.data
> @@ -262,11 +265,13 @@ class AuditToPolicy:
>                  if len(data) > 1:
>                      print("\tOne of the following booleans was set incorrectly.")
>                      for b in data:
> -                        print("\tDescription:\n\t%s\n" % sepolicy.boolean_desc(b[0]))
> +                        if sepolicy is not None:
> +                            print("\tDescription:\n\t%s\n" % sepolicy.boolean_desc(b[0]))
>                          print("\tAllow access by executing:\n\t# setsebool -P %s %d" % (b[0], b[1]))
>                  else:
>                      print("\tThe boolean %s was set incorrectly. " % (data[0][0]))
> -                    print("\tDescription:\n\t%s\n" % sepolicy.boolean_desc(data[0][0]))
> +                    if sepolicy is not None:
> +                        print("\tDescription:\n\t%s\n" % sepolicy.boolean_desc(data[0][0]))
>                      print("\tAllow access by executing:\n\t# setsebool -P %s %d" % (data[0][0], data[0][1]))
>                  continue
diff mbox series

Patch

diff --git a/python/audit2allow/audit2allow b/python/audit2allow/audit2allow
index 195f151c6ca1..18fe0a531d02 100644
--- a/python/audit2allow/audit2allow
+++ b/python/audit2allow/audit2allow
@@ -242,7 +242,10 @@  class AuditToPolicy:
 
     def __output_audit2why(self):
         import selinux
-        import sepolicy
+        try:
+            import sepolicy
+        except (ImportError, ValueError):
+            sepolicy = None
         for i in self.__parser.avc_msgs:
             rc = i.type
             data = i.data
@@ -262,11 +265,13 @@  class AuditToPolicy:
                 if len(data) > 1:
                     print("\tOne of the following booleans was set incorrectly.")
                     for b in data:
-                        print("\tDescription:\n\t%s\n" % sepolicy.boolean_desc(b[0]))
+                        if sepolicy is not None:
+                            print("\tDescription:\n\t%s\n" % sepolicy.boolean_desc(b[0]))
                         print("\tAllow access by executing:\n\t# setsebool -P %s %d" % (b[0], b[1]))
                 else:
                     print("\tThe boolean %s was set incorrectly. " % (data[0][0]))
-                    print("\tDescription:\n\t%s\n" % sepolicy.boolean_desc(data[0][0]))
+                    if sepolicy is not None:
+                        print("\tDescription:\n\t%s\n" % sepolicy.boolean_desc(data[0][0]))
                     print("\tAllow access by executing:\n\t# setsebool -P %s %d" % (data[0][0], data[0][1]))
                 continue