Current File : //bin/audit2why
#! /usr/libexec/platform-python -EsI
# Authors: Karl MacMillan <kmacmillan@mentalrootkit.com>
# Authors: Dan Walsh <dwalsh@redhat.com>
#
# Copyright (C) 2006-2013  Red Hat
# see file 'COPYING' for use and warranty information
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; version 2 only
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#

import sys
import os

import sepolgen.audit as audit
import sepolgen.policygen as policygen
import sepolgen.interfaces as interfaces
import sepolgen.output as output
import sepolgen.objectmodel as objectmodel
import sepolgen.defaults as defaults
import sepolgen.module as module
from sepolgen.sepolgeni18n import _
import selinux.audit2why as audit2why
import locale
try:
    locale.setlocale(locale.LC_ALL, '')
except:
    pass


class AuditToPolicy:
    VERSION = "%prog .1"
    SYSLOG = "/var/log/messages"

    def __init__(self):
        self.__options = None
        self.__parser = None
        self.__avs = None

    def __parse_options(self):
        from optparse import OptionParser

        parser = OptionParser(version=self.VERSION)
        parser.add_option("-b", "--boot", action="store_true", dest="boot", default=False,
                          help="audit messages since last boot conflicts with -i")
        parser.add_option("-a", "--all", action="store_true", dest="audit", default=False,
                          help="read input from audit log - conflicts with -i")
        parser.add_option("-p", "--policy", dest="policy", default=None, help="Policy file to use for analysis")
        parser.add_option("-d", "--dmesg", action="store_true", dest="dmesg", default=False,
                          help="read input from dmesg - conflicts with --all and --input")
        parser.add_option("-i", "--input", dest="input",
                          help="read input from <input> - conflicts with -a")
        parser.add_option("-l", "--lastreload", action="store_true", dest="lastreload", default=False,
                          help="read input only after the last reload")
        parser.add_option("-r", "--requires", action="store_true", dest="requires", default=False,
                          help="generate require statements for rules")
        parser.add_option("-m", "--module", dest="module",
                          help="set the module name - implies --requires")
        parser.add_option("-M", "--module-package", dest="module_package",
                          help="generate a module package - conflicts with -o and -m")
        parser.add_option("-o", "--output", dest="output",
                          help="append output to <filename>, conflicts with -M")
        parser.add_option("-D", "--dontaudit", action="store_true",
                          dest="dontaudit", default=False,
                          help="generate policy with dontaudit rules")
        parser.add_option("-R", "--reference", action="store_true", dest="refpolicy",
                          default=True, help="generate refpolicy style output")

        parser.add_option("-N", "--noreference", action="store_false", dest="refpolicy",
                          default=False, help="do not generate refpolicy style output")
        parser.add_option("-v", "--verbose", action="store_true", dest="verbose",
                          default=False, help="explain generated output")
        parser.add_option("-e", "--explain", action="store_true", dest="explain_long",
                          default=False, help="fully explain generated output")
        parser.add_option("-t", "--type", help="only process messages with a type that matches this regex",
                          dest="type")
        parser.add_option("--perm-map", dest="perm_map", help="file name of perm map")
        parser.add_option("--interface-info", dest="interface_info", help="file name of interface information")
        parser.add_option("-x", "--xperms", action="store_true", dest="xperms",
                          default=False, help="generate extended permission rules")
        parser.add_option("--debug", dest="debug", action="store_true", default=False,
                          help="leave generated modules for -M")
        parser.add_option("-w", "--why", dest="audit2why", action="store_true", default=(os.path.basename(sys.argv[0]) == "audit2why"),
                          help="Translates SELinux audit messages into a description of why the access was denied")

        options, args = parser.parse_args()

        # Make -d, -a, and -i conflict
        if options.audit is True or options.boot:
            if options.input is not None:
                sys.stderr.write("error: --all/--boot conflicts with --input\n")
            if options.dmesg is True:
                sys.stderr.write("error: --all/--boot conflicts with --dmesg\n")
        if options.input is not None and options.dmesg is True:
            sys.stderr.write("error: --input conflicts with --dmesg\n")

        # Turn on requires generation if a module name is given. Also verify
        # the module name.
        if options.module:
            name = options.module
        else:
            name = options.module_package
        if name:
            options.requires = True
            if not module.is_valid_name(name):
                sys.stderr.write('error: module names must begin with a letter, optionally followed by letters, numbers, "-", "_", "."\n')
                sys.exit(2)

        # Make -M and -o conflict
        if options.module_package:
            if options.output:
                sys.stderr.write("error: --module-package conflicts with --output\n")
                sys.exit(2)
            if options.module:
                sys.stderr.write("error: --module-package conflicts with --module\n")
                sys.exit(2)

        self.__options = options

    def __read_input(self):
        parser = audit.AuditParser(last_load_only=self.__options.lastreload)

        filename = None
        messages = None
        f = None

        # Figure out what input we want
        if self.__options.input is not None:
            filename = self.__options.input
        elif self.__options.dmesg:
            messages = audit.get_dmesg_msgs()
        elif self.__options.audit:
            try:
                messages = audit.get_audit_msgs()
            except OSError as e:
                sys.stderr.write('could not run ausearch - "%s"\n' % str(e))
                sys.exit(1)
        elif self.__options.boot:
            try:
                messages = audit.get_audit_boot_msgs()
            except OSError as e:
                sys.stderr.write('could not run ausearch - "%s"\n' % str(e))
                sys.exit(1)
        else:
            # This is the default if no input is specified
            f = sys.stdin

        # Get the input
        if filename is not None:
            try:
                f = open(filename)
            except IOError as e:
                sys.stderr.write('could not open file %s - "%s"\n' % (filename, str(e)))
                sys.exit(1)

        if f is not None:
            parser.parse_file(f)
            f.close()

        if messages is not None:
            parser.parse_string(messages)

        self.__parser = parser

    def __process_input(self):
        if self.__options.type:
            avcfilter = audit.AVCTypeFilter(self.__options.type)
            self.__avs = self.__parser.to_access(avcfilter)
            csfilter = audit.ComputeSidTypeFilter(self.__options.type)
            self.__role_types = self.__parser.to_role(csfilter)
        else:
            self.__avs = self.__parser.to_access()
            self.__role_types = self.__parser.to_role()

    def __load_interface_info(self):
        # Load interface info file
        if self.__options.interface_info:
            fn = self.__options.interface_info
        else:
            fn = defaults.interface_info()
        try:
            fd = open(fn)
        except:
            sys.stderr.write("could not open interface info [%s]\n" % fn)
            sys.exit(1)

        ifs = interfaces.InterfaceSet()
        ifs.from_file(fd)
        fd.close()

        # Also load perm maps
        if self.__options.perm_map:
            fn = self.__options.perm_map
        else:
            fn = defaults.perm_map()
        try:
            fd = open(fn)
        except:
            sys.stderr.write("could not open perm map [%s]\n" % fn)
            sys.exit(1)

        perm_maps = objectmodel.PermMappings()
        perm_maps.from_file(fd)

        return (ifs, perm_maps)

    def __output_modulepackage(self, writer, generator):
        generator.set_module_name(self.__options.module_package)
        filename = self.__options.module_package + ".te"
        packagename = self.__options.module_package + ".pp"

        try:
            fd = open(filename, "w")
        except IOError as e:
            sys.stderr.write("could not write output file: %s\n" % str(e))
            sys.exit(1)

        writer.write(generator.get_module(), fd)
        fd.close()

        mc = module.ModuleCompiler()

        try:
            mc.create_module_package(filename, self.__options.refpolicy)
        except RuntimeError as e:
            print(e)
            sys.exit(1)

        sys.stdout.write(_("******************** IMPORTANT ***********************\n"))
        sys.stdout.write((_("To make this policy package active, execute:" +
                            "\n\nsemodule -i %s\n\n") % packagename))

    def __output_audit2why(self):
        import selinux
        try:
            import sepolicy
        except (ImportError, ValueError):
            sepolicy = None
        for i in self.__parser.avc_msgs:
            rc = i.type
            data = i.data
            if rc >= 0:
                print("%s\n\tWas caused by:" % i.message)
            if rc == audit2why.ALLOW:
                print("\t\tUnknown - would be allowed by active policy")
                print("\t\tPossible mismatch between this policy and the one under which the audit message was generated.\n")
                print("\t\tPossible mismatch between current in-memory boolean settings vs. permanent ones.\n")
                continue
            if rc == audit2why.DONTAUDIT:
                print("\t\tUnknown - should be dontaudit'd by active policy")
                print("\t\tPossible mismatch between this policy and the one under which the audit message was generated.\n")
                print("\t\tPossible mismatch between current in-memory boolean settings vs. permanent ones.\n")
                continue
            if rc == audit2why.BOOLEAN:
                if len(data) > 1:
                    print("\tOne of the following booleans was set incorrectly.")
                    for b in data:
                        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]))
                    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

            if rc == audit2why.TERULE:
                print("\t\tMissing type enforcement (TE) allow rule.\n")
                print("\t\tYou can use audit2allow to generate a loadable module to allow this access.\n")
                continue

            if rc == audit2why.CONSTRAINT:
                print()  # !!!! This avc is a constraint violation.  You would need to modify the attributes of either the source or target types to allow this access.\n"
                print("#Constraint rule:")
                print("\n#\t" + data[0])
                for reason in data[1:]:
                    print("#\tPossible cause is the source %s and target %s are different.\n" % reason)

            if rc == audit2why.RBAC:
                print("\t\tMissing role allow rule.\n")
                print("\t\tAdd an allow rule for the role pair.\n")
                continue

            if rc == audit2why.BOUNDS:
                print("\t\tTypebounds violation.\n")
                print("\t\tAdd an allow rule for the parent type.\n")
                continue

        audit2why.finish()
        return

    def __output(self):

        if self.__options.audit2why:
            try:
                return self.__output_audit2why()
            except RuntimeError as e:
                print(e)
                sys.exit(1)

        g = policygen.PolicyGenerator()

        g.set_gen_dontaudit(self.__options.dontaudit)

        if self.__options.module:
            g.set_module_name(self.__options.module)

        # Interface generation
        if self.__options.refpolicy:
            ifs, perm_maps = self.__load_interface_info()
            g.set_gen_refpol(ifs, perm_maps)

        # Extended permissions
        if self.__options.xperms:
            g.set_gen_xperms(True)

        # Explanation
        if self.__options.verbose:
            g.set_gen_explain(policygen.SHORT_EXPLANATION)
        if self.__options.explain_long:
            g.set_gen_explain(policygen.LONG_EXPLANATION)

        # Requires
        if self.__options.requires:
            g.set_gen_requires(True)

        # Generate the policy
        g.add_access(self.__avs)
        g.add_role_types(self.__role_types)

        # Output
        writer = output.ModuleWriter()

        # Module package
        if self.__options.module_package:
            self.__output_modulepackage(writer, g)
        else:
            # File or stdout
            if self.__options.module:
                g.set_module_name(self.__options.module)

            if self.__options.output:
                fd = open(self.__options.output, "a")
            else:
                fd = sys.stdout
            writer.write(g.get_module(), fd)

    def main(self):
        try:
            self.__parse_options()
            if self.__options.policy:
                audit2why.init(self.__options.policy)
            else:
                audit2why.init()

            self.__read_input()
            self.__process_input()
            self.__output()
        except KeyboardInterrupt:
            sys.exit(0)
        except ValueError as e:
            print(e)
            sys.exit(1)
        except IOError as e:
            print(e)
            sys.exit(1)

if __name__ == "__main__":
    app = AuditToPolicy()
    app.main()
Vox Casino System kodowania Promocyjny Bonus z brakiem Depozytu

Vox Casino System kodowania Promocyjny Bonus z brakiem Depozytu

Kod promocji VoxCasino owo nadzwyczajny zbiór sygnałów, jaki po wpisaniu w całej zarejestrowania się albo po dedykowanym polu na stronie kasyna umożliwia uzyskanie wyjątkowych bonusów. Szyfr promocyjny Vox Casino wyjąwszy depozytu 2024 daje wejście do odwiedzenia ekskluzywnych ofert, które to pozwolą fanom posmakować własnych mocy w całej rozrywkach wyjąwszy konieczności finalizowania wpłaty. Wśród osiągalnych nagród są bezpłatne spiny, bonusy po rejestracji, co więcej bonusy gotówkowe, co sprawia kasyno bardziej atrakcyjnym w celu nowych graczy. Bonus wyjąwszy depozytu Vox Casino to osobliwa propozycja rabatowa, dzięki jakiej nowi nasz fani potrafią otrzymać darmowe środki bądź bezpłatne spiny z brakiem potrzeby wpłacania własnych gotówki. Vox Casino bonus z brakiem depozytu pozwala na zapytanie automatów albo komputerów stołowych bezpiecznie straty portale internetowe są pełne wzorów i modeli albumów i kart menu. nakładów. Promocja aktywuje baczności odruchowo przy zapisu i ocenie konta.

Jaki to system VIP proponuje Vox Casino?

Należałoby skorzystać z takiej ogłoszenia, ażeby cieszyć się wciąż większymi emocjami i nagrodami. Aby rozpocząć własną przygodę z grą po Vox Casino Poland, wystarczy kilkanaście zwykłych etapów. Ów podest wydaje się łatwa w całej obsłudze jak i również dostępna w celu każdego gracza, jaki stara się radować się emocjonującą rozrywką. Ochrona życia i zdrowia jest jednym z kluczowych aspektów zabawy sieciowy, zwłaszcza jak w grę wkraczają prawdziwe kapitał.

Zazwyczaj od czasu zero,pięć pory do 24 godzinek, w zależności od wybieranej metody płatności oraz wysokości ilości. W całej poniektórych przypadkach, przykładowo w chęci należności niepotrzebnych sum, może okazać się potrzebna oszacowanie tożsamości. Poproszono nam na temat istota kopii dokumentu oraz zgody adresu, , którzy wydaje się typową działalnością mającą na celu przeciwdziałanie oszustwom.

Zaczerpnij wraz z bonusów, żeby zapewnić sobie nadal duże wygrane!

real money online casino

O ile mieszkasz po kolejnym kraju, powinieneś lecz pamiętać na temat możliwej wymianie walut, jednakże profil kasynowe będzie mimo wszystko przewodzone w Zł. PolskiekasynoHEX jest to nasz kraj witryna zrzeszająca ekspertów na rynku hazardu sieciowy. Znajdziesz w tym miejscu zawodowe opinie kasyn internetowych, recenzje konsol hazardowych, aktualne bonusy oraz świeżości branżowe. Wyzyskując udostępniane przez ten witryna esencji zobowiązujesz się we własnym przedziale zbadać aktualność przepisów prawnych. Grając przy VOX Casino Poland, interesanci mają dopuszczenie do teraźniejszej platformy z bogatym wyborem gier jak i również atrakcyjnymi bonusami.

Polscy dostawcy licencjonowanych konsol

Pewne sprawy jak i również wyraźne normy uciechy czynią, iż to wspaniały asortyment na rzecz internautów, robiąc Casino VOX https://voxcasino.biz.pl/ numerem 1 na terytorium polski. Zgodnie z naszymi wewnętrznymi danymi, nad 68% fanów pochodzące z Polski korzysta z kasyna oczywiście przez aplikację. Konsumenci cenią szybki wejście do gierek, płynne działanie i niedobór potrzeby każdorazowego logowania za sprawą przeglądarkę.

Vox Casino: Urzędowe internetowego kasyno w polsce

Każdy z dostawców przestrzega surowych zasad licencyjnych, jakie możliwości zapewnia lojalność oraz transparentność przy każdej rozgrywce. Się troszczymy o ochronę materiałów badawczych portale internetowe są pełne wzorów i modeli albumów i kart menu. fanów, używając zaawansowane technologie szyfrowania. Vox Casino PL daje dobre transakcje oraz poufność danych empirycznych, jak zapewnia skupić się tylko i wyłącznie pod rozrywce. Selekcjonując naszej firmy, stawiasz dzięki sprawdzoną platformę, która to kładzie Twoje wiara w pierwotnym rejonie. Wówczas gdy przychodzi okres dzięki zapłatę wygranych, VOX Casino oferuje proces prędki, zwyczajny oraz wyjąwszy zbędnych opłat.

free online casino games win real money no deposit

Posucha przy sekcji wraz z grami pod żywo również odrzucić zwiększa generalnej marki tamtego serwisu. Sterowanie przy odrębnej frakcji lobby Casino Vox odrzucić będzie wam na szczęście nastręczać niepotrzebnych problemu – tutaj artysta poskąpił zakładek jak i również pobocznych lokalizacji przy jadłospis. Klasy komputerów nie istnieje zbyt dużo oraz operator wyróżnił tylko nowości, chodliwe tytuły, uciechy stołowe wideo, Aviatora, rozrywki wariantu crash i sloty. Rozrywki on-line zupełnie nie zaakceptować doczekały uwagi naszej pozycji w jadłospis – znajdziemy gryzie, przewijając stronę nadrzędną w dół.

Recenzja Vox Casino – poznaj recenzje, bonusy i zabawy kasynowe

Dostęp do odwiedzenia splątanego labiryntu Vox Casino wymaga determinacji Tezeusza. A w końcu starczy odwiedzać w pierwszej kolejności wraz z krawędzi kasyno wraz z dłuższym wiekiem pod polskim rynku, aby podpatrzeć architekturę lub układ. Jakub Zakrzewski to ceniony stwórca tekstów online jak i również typowych mediów, wyróżniający czujności miłym gustem jak i również świeżym spojrzeniem. Jego biegłości zawierają dokładną analizę materiałów badawczych oraz niezależne grupowanie materiałów badawczych, komponując kompleksowego specjalistę ds. By zapisać uwagi przy Vox Casino, starczy nacisnąć przycisk „Rejestracja”. Będziesz podobnie założyć konto, korzystając pochodzące z jednego spośród oferowanych witryn społecznościowych.

Owe niezbędny chód gwoli zgody tożsamości gracza oraz gwarancje chronienia konta bankowego. Kasyno także może wykonywać cykliczne przetestowania identyczności gracza oraz prosić na temat poboczne pliki (weksel zbyt publikatory, źródła zarobku). Ażeby zaspokoić kolejny rząd, należy wpłacić określoną kwotę, a otrzymując wyższy status, nieświadomie osiągasz każde zalety pferowane w wcześniejszych poziomach.

  • Drobiazgowe wiadomości tyczące Vox Casino w istocie deposit premia, możesz znaleźć pod własnej zdawkowej stronie www.
  • Poza tym musi wpisać własne reputacja, miano jak i również datę narodzin.
  • Kod promocyjny do VOX Casino jest w stanie także przyjść do odwiedzenia Cię samodzielnie — w Twój adres mailowy, przypisany do konta bankowego na naszej platformie.

W ten sposób gracze mogą skorzystać pochodzące z Vox Casino free spins i różnych korzyści wyjąwszy potrzeby wpłacania wstępnego depozytu. Ów platforma proponuje wyjątkowe korzyści również w celu oryginalnych, jak i porządnych zawodników, co potwierdzają Vox Casino recenzje odbiorców. Pod nowoczesnym rozwiązaniom oraz przyjaznym warunkom rozrywki dajemy najlepszą właściwość rozgrywki w całej casino Vox. Pewną pochodzące z najbardziej pociągających promocji wydaje się bonus «Swobodnie spośród Serca», który w minimalnym depozycie przynosi duży ruch oraz suplementarne bezpłatne spiny. Dzięki temu nowi gracze tegoż kasyna online Nasze państwo mają możliwość szybko rozpocząć własną wycieczkę wraz z grami przez internet oraz podwyższyć swe możliwości na wygraną.


Publicado

en

por

Etiquetas: