Fix handling of sepolicy network sorting.
- Additional interfaces needed for sepolicy gui
This commit is contained in:
parent
39c0a6ec6a
commit
305ae476dd
@ -250089,7 +250089,7 @@ index b6abdf5..c05c943 100644
|
|||||||
Generate an additional HTML man pages for the specified domain(s).
|
Generate an additional HTML man pages for the specified domain(s).
|
||||||
|
|
||||||
diff --git a/policycoreutils/sepolicy/sepolicy.py b/policycoreutils/sepolicy/sepolicy.py
|
diff --git a/policycoreutils/sepolicy/sepolicy.py b/policycoreutils/sepolicy/sepolicy.py
|
||||||
index b25d3b2..a0b262b 100755
|
index b25d3b2..9b29b39 100755
|
||||||
--- a/policycoreutils/sepolicy/sepolicy.py
|
--- a/policycoreutils/sepolicy/sepolicy.py
|
||||||
+++ b/policycoreutils/sepolicy/sepolicy.py
|
+++ b/policycoreutils/sepolicy/sepolicy.py
|
||||||
@@ -22,6 +22,8 @@
|
@@ -22,6 +22,8 @@
|
||||||
@ -250169,7 +250169,7 @@ index b25d3b2..a0b262b 100755
|
|||||||
newval = getattr(namespace, self.dest)
|
newval = getattr(namespace, self.dest)
|
||||||
if not newval:
|
if not newval:
|
||||||
newval = []
|
newval = []
|
||||||
@@ -140,19 +165,40 @@ class CheckPolicyType(argparse.Action):
|
@@ -140,27 +165,65 @@ class CheckPolicyType(argparse.Action):
|
||||||
|
|
||||||
class CheckUser(argparse.Action):
|
class CheckUser(argparse.Action):
|
||||||
def __call__(self, parser, namespace, value, option_string=None):
|
def __call__(self, parser, namespace, value, option_string=None):
|
||||||
@ -250205,6 +250205,19 @@ index b25d3b2..a0b262b 100755
|
|||||||
+ usage_text = _(usage_text)
|
+ usage_text = _(usage_text)
|
||||||
+
|
+
|
||||||
+ return usage_text
|
+ return usage_text
|
||||||
|
+
|
||||||
|
+def numcmp(val1,val2):
|
||||||
|
+ try:
|
||||||
|
+ v1 = int(val1.split(",")[0].split("-")[0])
|
||||||
|
+ v2 = int(val2.split(",")[0].split("-")[0])
|
||||||
|
+ if v1 > v2:
|
||||||
|
+ return 1
|
||||||
|
+ if v1 == v2:
|
||||||
|
+ return 0
|
||||||
|
+ if v1 < v2:
|
||||||
|
+ return -1
|
||||||
|
+ except:
|
||||||
|
+ return cmp(val1,val2)
|
||||||
+
|
+
|
||||||
def _print_net(src, protocol, perm):
|
def _print_net(src, protocol, perm):
|
||||||
- from sepolicy.network import get_network_connect
|
- from sepolicy.network import get_network_connect
|
||||||
@ -250213,9 +250226,15 @@ index b25d3b2..a0b262b 100755
|
|||||||
+ portdict = sepolicy.network.get_network_connect(src, protocol, perm)
|
+ portdict = sepolicy.network.get_network_connect(src, protocol, perm)
|
||||||
if len(portdict) > 0:
|
if len(portdict) > 0:
|
||||||
print "%s: %s %s" % (src, protocol, perm)
|
print "%s: %s %s" % (src, protocol, perm)
|
||||||
|
+ port_strings=[]
|
||||||
for p in portdict:
|
for p in portdict:
|
||||||
@@ -160,7 +206,7 @@ def _print_net(src, protocol, perm):
|
- for recs in portdict[p]:
|
||||||
print "\t" + recs
|
- print "\t" + recs
|
||||||
|
+ for t, recs in portdict[p]:
|
||||||
|
+ port_strings.append(", ".join(recs))
|
||||||
|
+ port_strings.sort(numcmp)
|
||||||
|
+ for p in port_strings:
|
||||||
|
+ print "\t" + p
|
||||||
|
|
||||||
def network(args):
|
def network(args):
|
||||||
- from sepolicy.network import portrecsbynum, portrecs, get_network_connect
|
- from sepolicy.network import portrecsbynum, portrecs, get_network_connect
|
||||||
@ -250223,7 +250242,7 @@ index b25d3b2..a0b262b 100755
|
|||||||
if args.list_ports:
|
if args.list_ports:
|
||||||
all_ports = []
|
all_ports = []
|
||||||
for i in portrecs:
|
for i in portrecs:
|
||||||
@@ -201,41 +247,41 @@ def manpage(args):
|
@@ -201,41 +264,41 @@ def manpage(args):
|
||||||
from sepolicy.manpage import ManPage, HTMLManPages, manpage_domains, manpage_roles, gen_domains
|
from sepolicy.manpage import ManPage, HTMLManPages, manpage_domains, manpage_roles, gen_domains
|
||||||
|
|
||||||
path = args.path
|
path = args.path
|
||||||
@ -250288,7 +250307,7 @@ index b25d3b2..a0b262b 100755
|
|||||||
|
|
||||||
def gen_network_args(parser):
|
def gen_network_args(parser):
|
||||||
net = parser.add_parser("network",
|
net = parser.add_parser("network",
|
||||||
@@ -283,7 +329,6 @@ def gen_communicate_args(parser):
|
@@ -283,7 +346,6 @@ def gen_communicate_args(parser):
|
||||||
comm.set_defaults(func=communicate)
|
comm.set_defaults(func=communicate)
|
||||||
|
|
||||||
def booleans(args):
|
def booleans(args):
|
||||||
@ -250296,7 +250315,7 @@ index b25d3b2..a0b262b 100755
|
|||||||
from sepolicy import boolean_desc
|
from sepolicy import boolean_desc
|
||||||
if args.all:
|
if args.all:
|
||||||
rc, args.booleans = selinux.security_get_boolean_names()
|
rc, args.booleans = selinux.security_get_boolean_names()
|
||||||
@@ -300,6 +345,7 @@ def gen_booleans_args(parser):
|
@@ -300,6 +362,7 @@ def gen_booleans_args(parser):
|
||||||
action="store_true",
|
action="store_true",
|
||||||
help=_("get all booleans descriptions"))
|
help=_("get all booleans descriptions"))
|
||||||
group.add_argument("-b", "--boolean", dest="booleans", nargs="+",
|
group.add_argument("-b", "--boolean", dest="booleans", nargs="+",
|
||||||
@ -250304,7 +250323,7 @@ index b25d3b2..a0b262b 100755
|
|||||||
help=_("boolean to get description"))
|
help=_("boolean to get description"))
|
||||||
bools.set_defaults(func=booleans)
|
bools.set_defaults(func=booleans)
|
||||||
|
|
||||||
@@ -319,22 +365,49 @@ def gen_transition_args(parser):
|
@@ -319,22 +382,49 @@ def gen_transition_args(parser):
|
||||||
help=_("target process domain"))
|
help=_("target process domain"))
|
||||||
trans.set_defaults(func=transition)
|
trans.set_defaults(func=transition)
|
||||||
|
|
||||||
@ -250363,7 +250382,7 @@ index b25d3b2..a0b262b 100755
|
|||||||
if not args.command:
|
if not args.command:
|
||||||
raise ValueError(_("Command required for this type of policy"))
|
raise ValueError(_("Command required for this type of policy"))
|
||||||
cmd = os.path.realpath(args.command)
|
cmd = os.path.realpath(args.command)
|
||||||
@@ -346,8 +419,18 @@ def generate(args):
|
@@ -346,8 +436,18 @@ def generate(args):
|
||||||
mypolicy.set_program(cmd)
|
mypolicy.set_program(cmd)
|
||||||
|
|
||||||
if args.types:
|
if args.types:
|
||||||
@ -250382,7 +250401,7 @@ index b25d3b2..a0b262b 100755
|
|||||||
for p in args.writepaths:
|
for p in args.writepaths:
|
||||||
if os.path.isdir(p):
|
if os.path.isdir(p):
|
||||||
mypolicy.add_dir(p)
|
mypolicy.add_dir(p)
|
||||||
@@ -366,20 +449,34 @@ def generate(args):
|
@@ -366,20 +466,34 @@ def generate(args):
|
||||||
def gen_interface_args(parser):
|
def gen_interface_args(parser):
|
||||||
itf = parser.add_parser("interface",
|
itf = parser.add_parser("interface",
|
||||||
help=_('List SELinux Policy interfaces'))
|
help=_('List SELinux Policy interfaces'))
|
||||||
@ -250420,7 +250439,7 @@ index b25d3b2..a0b262b 100755
|
|||||||
help=_('Generate SELinux Policy module template'))
|
help=_('Generate SELinux Policy module template'))
|
||||||
pol.add_argument("-d", "--domain", dest="domain", default=[],
|
pol.add_argument("-d", "--domain", dest="domain", default=[],
|
||||||
action=CheckDomain, nargs="*",
|
action=CheckDomain, nargs="*",
|
||||||
@@ -397,53 +494,57 @@ def gen_generate_args(parser):
|
@@ -397,53 +511,57 @@ def gen_generate_args(parser):
|
||||||
help=argparse.SUPPRESS)
|
help=argparse.SUPPRESS)
|
||||||
pol.add_argument("-t", "--type", dest="types", default=[], nargs="*",
|
pol.add_argument("-t", "--type", dest="types", default=[], nargs="*",
|
||||||
action=CheckType,
|
action=CheckType,
|
||||||
@ -250504,7 +250523,7 @@ index b25d3b2..a0b262b 100755
|
|||||||
pol.set_defaults(func=generate)
|
pol.set_defaults(func=generate)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
@@ -461,11 +562,17 @@ if __name__ == '__main__':
|
@@ -461,11 +579,17 @@ if __name__ == '__main__':
|
||||||
gen_transition_args(subparsers)
|
gen_transition_args(subparsers)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@ -250524,7 +250543,7 @@ index b25d3b2..a0b262b 100755
|
|||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
diff --git a/policycoreutils/sepolicy/sepolicy/__init__.py b/policycoreutils/sepolicy/sepolicy/__init__.py
|
diff --git a/policycoreutils/sepolicy/sepolicy/__init__.py b/policycoreutils/sepolicy/sepolicy/__init__.py
|
||||||
index 5e7415c..92a6b88 100644
|
index 5e7415c..3a5391e 100644
|
||||||
--- a/policycoreutils/sepolicy/sepolicy/__init__.py
|
--- a/policycoreutils/sepolicy/sepolicy/__init__.py
|
||||||
+++ b/policycoreutils/sepolicy/sepolicy/__init__.py
|
+++ b/policycoreutils/sepolicy/sepolicy/__init__.py
|
||||||
@@ -7,6 +7,9 @@ import _policy
|
@@ -7,6 +7,9 @@ import _policy
|
||||||
@ -250537,7 +250556,7 @@ index 5e7415c..92a6b88 100644
|
|||||||
gettext.bindtextdomain(PROGNAME, "/usr/share/locale")
|
gettext.bindtextdomain(PROGNAME, "/usr/share/locale")
|
||||||
gettext.textdomain(PROGNAME)
|
gettext.textdomain(PROGNAME)
|
||||||
try:
|
try:
|
||||||
@@ -37,9 +40,75 @@ CLASS = 'class'
|
@@ -37,9 +40,116 @@ CLASS = 'class'
|
||||||
TRANSITION = 'transition'
|
TRANSITION = 'transition'
|
||||||
ROLE_ALLOW = 'role_allow'
|
ROLE_ALLOW = 'role_allow'
|
||||||
|
|
||||||
@ -250563,6 +250582,39 @@ index 5e7415c..92a6b88 100644
|
|||||||
+ dict_list = filter(lambda x: _dict_has_perms(x, perms), dict_list)
|
+ dict_list = filter(lambda x: _dict_has_perms(x, perms), dict_list)
|
||||||
+ return dict_list
|
+ return dict_list
|
||||||
+
|
+
|
||||||
|
+def get_types_from_attribute(attribute):
|
||||||
|
+ return info(ATTRIBUTE,attribute)[0]["types"]
|
||||||
|
+
|
||||||
|
+def get_writable_files(setype):
|
||||||
|
+ all_attributes = get_all_attributes()
|
||||||
|
+ all_writes = []
|
||||||
|
+ mpaths = {}
|
||||||
|
+ permlist = search([ALLOW],{'source':setype, 'permlist':['open', 'write'], 'class':'file'})
|
||||||
|
+ if permlist == None or len(permlist) == 0:
|
||||||
|
+ return mpaths
|
||||||
|
+
|
||||||
|
+ fcdict = get_fcdict()
|
||||||
|
+
|
||||||
|
+ attributes = ["proc_type", "sysctl_type"]
|
||||||
|
+ for i in permlist:
|
||||||
|
+ if i['target'] in attributes:
|
||||||
|
+ continue
|
||||||
|
+ if i['target'].endswith("_t"):
|
||||||
|
+ if i['target'] not in all_writes:
|
||||||
|
+ if i['target'] != setype:
|
||||||
|
+ all_writes.append(i['target'])
|
||||||
|
+ else:
|
||||||
|
+ for t in get_types_from_attribute(i['target']):
|
||||||
|
+ if t not in all_writes:
|
||||||
|
+ all_writes.append(t)
|
||||||
|
+
|
||||||
|
+ for f in all_writes:
|
||||||
|
+ try:
|
||||||
|
+ mpaths[f] = fcdict[f]
|
||||||
|
+ except KeyError:
|
||||||
|
+ mpaths[f] = []
|
||||||
|
+ return mpaths
|
||||||
|
+
|
||||||
+fcdict=None
|
+fcdict=None
|
||||||
+def get_fcdict(fc_path = selinux.selinux_file_context_path()):
|
+def get_fcdict(fc_path = selinux.selinux_file_context_path()):
|
||||||
+ global fcdict
|
+ global fcdict
|
||||||
@ -250601,6 +250653,14 @@ index 5e7415c..92a6b88 100644
|
|||||||
+ entrypoints = map(lambda x: x['target'], search([ALLOW],{'source':setype, 'permlist':['entrypoint'], 'class':'file'}))
|
+ entrypoints = map(lambda x: x['target'], search([ALLOW],{'source':setype, 'permlist':['entrypoint'], 'class':'file'}))
|
||||||
+ return entrypoints
|
+ return entrypoints
|
||||||
+
|
+
|
||||||
|
+def get_init_entrypoint_target(entrypoint):
|
||||||
|
+ try:
|
||||||
|
+ entrypoints = map(lambda x: x['transtype'], search([TRANSITION],{'source':"init_t", 'target':entrypoint, 'class':'process'}))
|
||||||
|
+ return entrypoints[0]
|
||||||
|
+ except TypeError:
|
||||||
|
+ pass
|
||||||
|
+ return None
|
||||||
|
+
|
||||||
+def get_all_entrypoints(setype):
|
+def get_all_entrypoints(setype):
|
||||||
+ fcdict = get_fcdict()
|
+ fcdict = get_fcdict()
|
||||||
+ mpaths = {}
|
+ mpaths = {}
|
||||||
@ -250615,7 +250675,7 @@ index 5e7415c..92a6b88 100644
|
|||||||
policies = glob.glob ("%s.*" % path )
|
policies = glob.glob ("%s.*" % path )
|
||||||
policies.sort()
|
policies.sort()
|
||||||
return policies[-1]
|
return policies[-1]
|
||||||
@@ -47,6 +116,27 @@ def __get_installed_policy():
|
@@ -47,6 +157,27 @@ def __get_installed_policy():
|
||||||
pass
|
pass
|
||||||
raise ValueError(_("No SELinux Policy installed"))
|
raise ValueError(_("No SELinux Policy installed"))
|
||||||
|
|
||||||
@ -250643,7 +250703,7 @@ index 5e7415c..92a6b88 100644
|
|||||||
all_types = None
|
all_types = None
|
||||||
def get_all_types():
|
def get_all_types():
|
||||||
global all_types
|
global all_types
|
||||||
@@ -54,6 +144,13 @@ def get_all_types():
|
@@ -54,6 +185,13 @@ def get_all_types():
|
||||||
all_types = map(lambda x: x['name'], info(TYPE))
|
all_types = map(lambda x: x['name'], info(TYPE))
|
||||||
return all_types
|
return all_types
|
||||||
|
|
||||||
@ -250657,7 +250717,7 @@ index 5e7415c..92a6b88 100644
|
|||||||
role_allows = None
|
role_allows = None
|
||||||
def get_all_role_allows():
|
def get_all_role_allows():
|
||||||
global role_allows
|
global role_allows
|
||||||
@@ -71,6 +168,7 @@ def get_all_role_allows():
|
@@ -71,6 +209,7 @@ def get_all_role_allows():
|
||||||
return role_allows
|
return role_allows
|
||||||
|
|
||||||
def get_all_entrypoint_domains():
|
def get_all_entrypoint_domains():
|
||||||
@ -250665,7 +250725,7 @@ index 5e7415c..92a6b88 100644
|
|||||||
all_domains = []
|
all_domains = []
|
||||||
types=get_all_types()
|
types=get_all_types()
|
||||||
types.sort()
|
types.sort()
|
||||||
@@ -81,11 +179,54 @@ def get_all_entrypoint_domains():
|
@@ -81,11 +220,54 @@ def get_all_entrypoint_domains():
|
||||||
all_domains.append(m[0])
|
all_domains.append(m[0])
|
||||||
return all_domains
|
return all_domains
|
||||||
|
|
||||||
@ -250721,7 +250781,7 @@ index 5e7415c..92a6b88 100644
|
|||||||
return all_domains
|
return all_domains
|
||||||
|
|
||||||
roles = None
|
roles = None
|
||||||
@@ -139,50 +280,62 @@ def get_all_attributes():
|
@@ -139,50 +321,92 @@ def get_all_attributes():
|
||||||
return all_attributes
|
return all_attributes
|
||||||
|
|
||||||
def policy(policy_file):
|
def policy(policy_file):
|
||||||
@ -250786,6 +250846,36 @@ index 5e7415c..92a6b88 100644
|
|||||||
-def info(setype, name=None):
|
-def info(setype, name=None):
|
||||||
- dict_list = _policy.info(setype, name)
|
- dict_list = _policy.info(setype, name)
|
||||||
- return dict_list
|
- return dict_list
|
||||||
|
+def gen_short_name(setype):
|
||||||
|
+ all_domains = get_all_domains()
|
||||||
|
+ if setype.endswith("_t"):
|
||||||
|
+ domainname = setype[:-2]
|
||||||
|
+ else:
|
||||||
|
+ domainname = setype
|
||||||
|
+ if domainname + "_t" not in all_domains:
|
||||||
|
+ raise ValueError("domain %s_t does not exist" % domainname)
|
||||||
|
+ if domainname[-1]=='d':
|
||||||
|
+ short_name = domainname[:-1] + "_"
|
||||||
|
+ else:
|
||||||
|
+ short_name = domainname + "_"
|
||||||
|
+ return (domainname, short_name)
|
||||||
|
+
|
||||||
|
+def get_bools(setype):
|
||||||
|
+ bools = []
|
||||||
|
+ domainbools = []
|
||||||
|
+ domainname, short_name = gen_short_name(setype)
|
||||||
|
+ for i in map(lambda x: x['boolean'], filter(lambda x: 'boolean' in x, search([ALLOW],{'source' : setype}))):
|
||||||
|
+ for b in i:
|
||||||
|
+ if not isinstance(b,tuple):
|
||||||
|
+ continue
|
||||||
|
+ if b[0].startswith(short_name) or b[0].startswith(domainname):
|
||||||
|
+ if b not in domainbools and (b[0], not b[1]) not in domainbools:
|
||||||
|
+ domainbools.append(b)
|
||||||
|
+ else:
|
||||||
|
+ if b not in bools and (b[0], not b[1]) not in bools:
|
||||||
|
+ bools.append(b)
|
||||||
|
+ return (domainbools, bools)
|
||||||
|
+
|
||||||
+booleans = None
|
+booleans = None
|
||||||
+def get_all_booleans():
|
+def get_all_booleans():
|
||||||
+ global booleans
|
+ global booleans
|
||||||
@ -250809,7 +250899,7 @@ index 5e7415c..92a6b88 100644
|
|||||||
def gen_bool_dict(path="/usr/share/selinux/devel/policy.xml"):
|
def gen_bool_dict(path="/usr/share/selinux/devel/policy.xml"):
|
||||||
global booleans_dict
|
global booleans_dict
|
||||||
if booleans_dict:
|
if booleans_dict:
|
||||||
@@ -191,7 +344,7 @@ def gen_bool_dict(path="/usr/share/selinux/devel/policy.xml"):
|
@@ -191,7 +415,7 @@ def gen_bool_dict(path="/usr/share/selinux/devel/policy.xml"):
|
||||||
import re
|
import re
|
||||||
booleans_dict = {}
|
booleans_dict = {}
|
||||||
try:
|
try:
|
||||||
@ -251242,7 +251332,7 @@ index 8b063ca..c7dac62 100644
|
|||||||
+ else:
|
+ else:
|
||||||
+ sys.stderr.write(_("\nCompiling of %s interface is not supported." % interface))
|
+ sys.stderr.write(_("\nCompiling of %s interface is not supported." % interface))
|
||||||
diff --git a/policycoreutils/sepolicy/sepolicy/manpage.py b/policycoreutils/sepolicy/sepolicy/manpage.py
|
diff --git a/policycoreutils/sepolicy/sepolicy/manpage.py b/policycoreutils/sepolicy/sepolicy/manpage.py
|
||||||
index 25062da..cc5467f 100755
|
index 25062da..086f2a7 100755
|
||||||
--- a/policycoreutils/sepolicy/sepolicy/manpage.py
|
--- a/policycoreutils/sepolicy/sepolicy/manpage.py
|
||||||
+++ b/policycoreutils/sepolicy/sepolicy/manpage.py
|
+++ b/policycoreutils/sepolicy/sepolicy/manpage.py
|
||||||
@@ -28,12 +28,12 @@ import string
|
@@ -28,12 +28,12 @@ import string
|
||||||
@ -251299,7 +251389,7 @@ index 25062da..cc5467f 100755
|
|||||||
|
|
||||||
class HTMLManPages:
|
class HTMLManPages:
|
||||||
"""
|
"""
|
||||||
@@ -416,40 +414,33 @@ class ManPage:
|
@@ -416,56 +414,42 @@ class ManPage:
|
||||||
"""
|
"""
|
||||||
Generate a Manpage on an SELinux domain in the specified path
|
Generate a Manpage on an SELinux domain in the specified path
|
||||||
"""
|
"""
|
||||||
@ -251357,16 +251447,15 @@ index 25062da..cc5467f 100755
|
|||||||
+ self.xmlpath = self.root + "/usr/share/selinux/devel/policy.xml"
|
+ self.xmlpath = self.root + "/usr/share/selinux/devel/policy.xml"
|
||||||
self.booleans_dict = gen_bool_dict(self.xmlpath)
|
self.booleans_dict = gen_bool_dict(self.xmlpath)
|
||||||
|
|
||||||
if domainname.endswith("_t"):
|
- if domainname.endswith("_t"):
|
||||||
@@ -459,13 +450,16 @@ class ManPage:
|
- self.domainname = domainname[:-2]
|
||||||
|
- else:
|
||||||
if self.domainname + "_t" not in self.all_domains:
|
- self.domainname = domainname
|
||||||
raise ValueError("domain %s_t does not exist" % self.domainname)
|
-
|
||||||
|
- if self.domainname + "_t" not in self.all_domains:
|
||||||
|
- raise ValueError("domain %s_t does not exist" % self.domainname)
|
||||||
- self.short_name = self.domainname
|
- self.short_name = self.domainname
|
||||||
+ if self.domainname[-1]=='d':
|
+ self.domainname, self.short_name = gen_short_name(domainname)
|
||||||
+ self.short_name = self.domainname[:-1] + "_"
|
|
||||||
+ else:
|
|
||||||
+ self.short_name = self.domainname + "_"
|
|
||||||
|
|
||||||
self.type = self.domainname + "_t"
|
self.type = self.domainname + "_t"
|
||||||
self._gen_bools()
|
self._gen_bools()
|
||||||
@ -251377,7 +251466,7 @@ index 25062da..cc5467f 100755
|
|||||||
self.__gen_user_man_page()
|
self.__gen_user_man_page()
|
||||||
if self.html:
|
if self.html:
|
||||||
manpage_roles.append(self.man_page_path)
|
manpage_roles.append(self.man_page_path)
|
||||||
@@ -483,16 +477,23 @@ class ManPage:
|
@@ -483,16 +467,16 @@ class ManPage:
|
||||||
def _gen_bools(self):
|
def _gen_bools(self):
|
||||||
self.bools=[]
|
self.bools=[]
|
||||||
self.domainbools=[]
|
self.domainbools=[]
|
||||||
@ -251398,20 +251487,13 @@ index 25062da..cc5467f 100755
|
|||||||
+ types.append(t+"_t")
|
+ types.append(t+"_t")
|
||||||
+
|
+
|
||||||
+ for t in types:
|
+ for t in types:
|
||||||
+ for i in map(lambda x: x['boolean'], filter(lambda x: 'boolean' in x, sepolicy.search([sepolicy.ALLOW],{'source' : t }))):
|
+ domainbools, bools = get_bools(t)
|
||||||
+ for b in i:
|
+ self.bools += bools
|
||||||
+ if not isinstance(b,tuple):
|
+ self.domainbools += bools
|
||||||
+ continue
|
|
||||||
+ if b[0].startswith(self.short_name) or b[0].startswith(self.domainname):
|
|
||||||
+ if b not in self.domainbools and (b[0], not b[1]) not in self.domainbools:
|
|
||||||
+ self.domainbools.append(b)
|
|
||||||
+ else:
|
|
||||||
+ if b not in self.bools and (b[0], not b[1]) not in self.bools:
|
|
||||||
+ self.bools.append(b)
|
|
||||||
|
|
||||||
self.bools.sort()
|
self.bools.sort()
|
||||||
self.domainbools.sort()
|
self.domainbools.sort()
|
||||||
@@ -538,9 +539,6 @@ class ManPage:
|
@@ -538,9 +522,6 @@ class ManPage:
|
||||||
print path
|
print path
|
||||||
|
|
||||||
def __gen_man_page(self):
|
def __gen_man_page(self):
|
||||||
@ -251421,7 +251503,7 @@ index 25062da..cc5467f 100755
|
|||||||
self.anon_list = []
|
self.anon_list = []
|
||||||
|
|
||||||
self.attributes = {}
|
self.attributes = {}
|
||||||
@@ -563,22 +561,11 @@ class ManPage:
|
@@ -563,22 +544,11 @@ class ManPage:
|
||||||
|
|
||||||
def _get_ptypes(self):
|
def _get_ptypes(self):
|
||||||
for f in self.all_domains:
|
for f in self.all_domains:
|
||||||
@ -251447,7 +251529,7 @@ index 25062da..cc5467f 100755
|
|||||||
% {'domainname':self.domainname, 'date': time.strftime("%y-%m-%d")})
|
% {'domainname':self.domainname, 'date': time.strftime("%y-%m-%d")})
|
||||||
self.fd.write(r"""
|
self.fd.write(r"""
|
||||||
.SH "NAME"
|
.SH "NAME"
|
||||||
@@ -774,7 +761,7 @@ can be used to make the process type %(domainname)s_t permissive. SELinux does n
|
@@ -774,7 +744,7 @@ can be used to make the process type %(domainname)s_t permissive. SELinux does n
|
||||||
def _port_types(self):
|
def _port_types(self):
|
||||||
self.ports = []
|
self.ports = []
|
||||||
for f in self.all_port_types:
|
for f in self.all_port_types:
|
||||||
@ -251456,7 +251538,7 @@ index 25062da..cc5467f 100755
|
|||||||
self.ports.append(f)
|
self.ports.append(f)
|
||||||
|
|
||||||
if len(self.ports) == 0:
|
if len(self.ports) == 0:
|
||||||
@@ -923,13 +910,12 @@ to apply the labels.
|
@@ -923,13 +893,12 @@ to apply the labels.
|
||||||
|
|
||||||
def _see_also(self):
|
def _see_also(self):
|
||||||
ret = ""
|
ret = ""
|
||||||
@ -251472,7 +251554,7 @@ index 25062da..cc5467f 100755
|
|||||||
ret += ", %s_selinux(8)" % d
|
ret += ", %s_selinux(8)" % d
|
||||||
self.fd.write(ret)
|
self.fd.write(ret)
|
||||||
|
|
||||||
@@ -947,13 +933,14 @@ semanage fcontext -a -t public_content_t "/var/%(domainname)s(/.*)?"
|
@@ -947,13 +916,14 @@ semanage fcontext -a -t public_content_t "/var/%(domainname)s(/.*)?"
|
||||||
.B restorecon -F -R -v /var/%(domainname)s
|
.B restorecon -F -R -v /var/%(domainname)s
|
||||||
.pp
|
.pp
|
||||||
.TP
|
.TP
|
||||||
@ -251489,7 +251571,7 @@ index 25062da..cc5467f 100755
|
|||||||
""" % {'domainname':self.domainname})
|
""" % {'domainname':self.domainname})
|
||||||
for b in self.anon_list:
|
for b in self.anon_list:
|
||||||
desc = self.booleans_dict[b][2][0].lower() + self.booleans_dict[b][2][1:]
|
desc = self.booleans_dict[b][2][0].lower() + self.booleans_dict[b][2][1:]
|
||||||
@@ -998,12 +985,11 @@ is a GUI tool available to customize SELinux policy settings.
|
@@ -998,12 +968,11 @@ is a GUI tool available to customize SELinux policy settings.
|
||||||
|
|
||||||
.SH AUTHOR
|
.SH AUTHOR
|
||||||
This manual page was auto-generated using
|
This manual page was auto-generated using
|
||||||
@ -251504,7 +251586,7 @@ index 25062da..cc5467f 100755
|
|||||||
|
|
||||||
if self.booltext != "":
|
if self.booltext != "":
|
||||||
self.fd.write(", setsebool(8)")
|
self.fd.write(", setsebool(8)")
|
||||||
@@ -1230,6 +1216,7 @@ The SELinux user %s_u is not able to terminal login.
|
@@ -1230,6 +1199,7 @@ The SELinux user %s_u is not able to terminal login.
|
||||||
""" % self.domainname)
|
""" % self.domainname)
|
||||||
|
|
||||||
def _network(self):
|
def _network(self):
|
||||||
@ -251513,7 +251595,7 @@ index 25062da..cc5467f 100755
|
|||||||
.SH NETWORK
|
.SH NETWORK
|
||||||
""")
|
""")
|
||||||
diff --git a/policycoreutils/sepolicy/sepolicy/network.py b/policycoreutils/sepolicy/sepolicy/network.py
|
diff --git a/policycoreutils/sepolicy/sepolicy/network.py b/policycoreutils/sepolicy/sepolicy/network.py
|
||||||
index 66efe26..a446d68 100755
|
index 66efe26..739afa9 100755
|
||||||
--- a/policycoreutils/sepolicy/sepolicy/network.py
|
--- a/policycoreutils/sepolicy/sepolicy/network.py
|
||||||
+++ b/policycoreutils/sepolicy/sepolicy/network.py
|
+++ b/policycoreutils/sepolicy/sepolicy/network.py
|
||||||
@@ -25,27 +25,6 @@ import sepolicy
|
@@ -25,27 +25,6 @@ import sepolicy
|
||||||
@ -251552,6 +251634,28 @@ index 66efe26..a446d68 100755
|
|||||||
d={}
|
d={}
|
||||||
tlist = get_types(src, "%s_socket" % protocol, [perm])
|
tlist = get_types(src, "%s_socket" % protocol, [perm])
|
||||||
if len(tlist) > 0:
|
if len(tlist) > 0:
|
||||||
|
@@ -77,16 +57,16 @@ def get_network_connect(src, protocol, perm):
|
||||||
|
if "port_t" in tlist:
|
||||||
|
continue
|
||||||
|
if i == "port_t":
|
||||||
|
- d[(src,protocol,perm)].append("all ports with out defined types")
|
||||||
|
+ d[(src,protocol,perm)].append((i, ["all ports with out defined types"]))
|
||||||
|
elif i == "unreserved_port_type":
|
||||||
|
- d[(src,protocol,perm)].append("%s: all ports > 1024" % i)
|
||||||
|
+ d[(src,protocol,perm)].append((i, ["all ports > 1024"]))
|
||||||
|
elif i == "reserved_port_type":
|
||||||
|
- d[(src,protocol,perm)].append("%s: all ports < 1024" % i)
|
||||||
|
+ d[(src,protocol,perm)].append((i, ["all ports < 1024"]))
|
||||||
|
elif i == "rpc_port_type":
|
||||||
|
- d[(src,protocol,perm)].append("%s: all ports > 500 and < 1024" % i)
|
||||||
|
+ d[(src,protocol,perm)].append((i, ["all ports > 500 and < 1024"]))
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
- d[(src,protocol,perm)].append("%s: %s" % (i, ",".join(portrecs[(i, protocol)])))
|
||||||
|
+ d[(src,protocol,perm)].append((i, portrecs[(i, protocol)]))
|
||||||
|
except KeyError:
|
||||||
|
pass
|
||||||
|
return d
|
||||||
diff --git a/policycoreutils/sepolicy/sepolicy/templates/script.py b/policycoreutils/sepolicy/sepolicy/templates/script.py
|
diff --git a/policycoreutils/sepolicy/sepolicy/templates/script.py b/policycoreutils/sepolicy/sepolicy/templates/script.py
|
||||||
index c139070..c79738b 100644
|
index c139070..c79738b 100644
|
||||||
--- a/policycoreutils/sepolicy/sepolicy/templates/script.py
|
--- a/policycoreutils/sepolicy/sepolicy/templates/script.py
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
Summary: SELinux policy core utilities
|
Summary: SELinux policy core utilities
|
||||||
Name: policycoreutils
|
Name: policycoreutils
|
||||||
Version: 2.1.14
|
Version: 2.1.14
|
||||||
Release: 51%{?dist}
|
Release: 52%{?dist}
|
||||||
License: GPLv2
|
License: GPLv2
|
||||||
Group: System Environment/Base
|
Group: System Environment/Base
|
||||||
# Based on git repository with tag 20101221
|
# Based on git repository with tag 20101221
|
||||||
@ -311,6 +311,10 @@ The policycoreutils-restorecond package contains the restorecond service.
|
|||||||
%systemd_postun_with_restart restorecond.service
|
%systemd_postun_with_restart restorecond.service
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Jun 17 2013 Dan Walsh <dwalsh@redhat.com> - 2.1.14-52
|
||||||
|
- Fix handling of sepolicy network sorting.
|
||||||
|
- Additional interfaces needed for sepolicy gui
|
||||||
|
|
||||||
* Thu Jun 6 2013 Dan Walsh <dwalsh@redhat.com> - 2.1.14-51
|
* Thu Jun 6 2013 Dan Walsh <dwalsh@redhat.com> - 2.1.14-51
|
||||||
- Fix handling of semanage args
|
- Fix handling of semanage args
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user