Fix sepolicy to be able to work on an SELinux disabled system.
- Needed to be able to build man pages in selinux-policy package
This commit is contained in:
parent
3f69c2f15b
commit
21179e1822
@ -1363,6 +1363,18 @@ index 11b534f..eb86eae 100644
|
|||||||
-mkdir -p $(MANDIR)/man8
|
-mkdir -p $(MANDIR)/man8
|
||||||
install -m 644 *.8 $(MANDIR)/man8
|
install -m 644 *.8 $(MANDIR)/man8
|
||||||
-mkdir -p $(BASHCOMPLETIONDIR)
|
-mkdir -p $(BASHCOMPLETIONDIR)
|
||||||
|
diff --git a/policycoreutils/sepolicy/policy.c b/policycoreutils/sepolicy/policy.c
|
||||||
|
index 4eca22d..eeee0ab 100644
|
||||||
|
--- a/policycoreutils/sepolicy/policy.c
|
||||||
|
+++ b/policycoreutils/sepolicy/policy.c
|
||||||
|
@@ -66,7 +66,6 @@ PyObject *wrap_policy(PyObject *UNUSED(self), PyObject *args){
|
||||||
|
}
|
||||||
|
apol_vector_destroy(&mod_paths);
|
||||||
|
|
||||||
|
- policy_load_options |= QPOL_POLICY_OPTION_MATCH_SYSTEM;
|
||||||
|
policy = apol_policy_create_from_policy_path(pol_path, policy_load_options, NULL, NULL);
|
||||||
|
apol_policy_path_destroy(&pol_path);
|
||||||
|
if (!policy) {
|
||||||
diff --git a/policycoreutils/sepolicy/sepolgen.8 b/policycoreutils/sepolicy/sepolgen.8
|
diff --git a/policycoreutils/sepolicy/sepolgen.8 b/policycoreutils/sepolicy/sepolgen.8
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..3ecf3eb
|
index 0000000..3ecf3eb
|
||||||
@ -1520,7 +1532,7 @@ index b25d3b2..7a15d88 100755
|
|||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
except ValueError,e:
|
except ValueError,e:
|
||||||
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..b9cb9cc 100644
|
index 5e7415c..e0f5f86 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
|
||||||
@@ -37,9 +37,30 @@ CLASS = 'class'
|
@@ -37,9 +37,30 @@ CLASS = 'class'
|
||||||
@ -1556,7 +1568,21 @@ index 5e7415c..b9cb9cc 100644
|
|||||||
policies = glob.glob ("%s.*" % path )
|
policies = glob.glob ("%s.*" % path )
|
||||||
policies.sort()
|
policies.sort()
|
||||||
return policies[-1]
|
return policies[-1]
|
||||||
@@ -71,6 +92,7 @@ def get_all_role_allows():
|
@@ -54,6 +75,13 @@ def get_all_types():
|
||||||
|
all_types = map(lambda x: x['name'], info(TYPE))
|
||||||
|
return all_types
|
||||||
|
|
||||||
|
+user_types = None
|
||||||
|
+def get_user_types():
|
||||||
|
+ global user_types
|
||||||
|
+ if user_types == None:
|
||||||
|
+ user_types = info(ATTRIBUTE,"userdomain")[0]["types"]
|
||||||
|
+ return user_types
|
||||||
|
+
|
||||||
|
role_allows = None
|
||||||
|
def get_all_role_allows():
|
||||||
|
global role_allows
|
||||||
|
@@ -71,6 +99,7 @@ def get_all_role_allows():
|
||||||
return role_allows
|
return role_allows
|
||||||
|
|
||||||
def get_all_entrypoint_domains():
|
def get_all_entrypoint_domains():
|
||||||
@ -1564,7 +1590,35 @@ index 5e7415c..b9cb9cc 100644
|
|||||||
all_domains = []
|
all_domains = []
|
||||||
types=get_all_types()
|
types=get_all_types()
|
||||||
types.sort()
|
types.sort()
|
||||||
@@ -85,7 +107,7 @@ all_domains = None
|
@@ -81,11 +110,35 @@ def get_all_entrypoint_domains():
|
||||||
|
all_domains.append(m[0])
|
||||||
|
return all_domains
|
||||||
|
|
||||||
|
+portrecs = None
|
||||||
|
+portrecsbynum = None
|
||||||
|
+
|
||||||
|
+def gen_port_dict():
|
||||||
|
+ global portrecs
|
||||||
|
+ global portrecsbynum
|
||||||
|
+ if portrecs:
|
||||||
|
+ return ( portrecs, portrecsbynum )
|
||||||
|
+ portrecsbynum = {}
|
||||||
|
+ portrecs = {}
|
||||||
|
+ for i in info(PORT):
|
||||||
|
+ if i['low'] == i['high']:
|
||||||
|
+ port = str(i['low'])
|
||||||
|
+ else:
|
||||||
|
+ port = "%s-%s" % (str(i['low']), str(i['high']))
|
||||||
|
+
|
||||||
|
+ if (i['type'], i['protocol']) in portrecs:
|
||||||
|
+ portrecs [(i['type'], i['protocol'])].append(port)
|
||||||
|
+ else:
|
||||||
|
+ portrecs [(i['type'], i['protocol'])] = [port]
|
||||||
|
+
|
||||||
|
+ portrecsbynum[(i['low'], i['high'],i['protocol'])] = (i['type'], i['range'])
|
||||||
|
+ return ( portrecs, portrecsbynum )
|
||||||
|
+
|
||||||
|
all_domains = None
|
||||||
def get_all_domains():
|
def get_all_domains():
|
||||||
global all_domains
|
global all_domains
|
||||||
if not all_domains:
|
if not all_domains:
|
||||||
@ -1573,7 +1627,7 @@ index 5e7415c..b9cb9cc 100644
|
|||||||
return all_domains
|
return all_domains
|
||||||
|
|
||||||
roles = None
|
roles = None
|
||||||
@@ -139,49 +161,43 @@ def get_all_attributes():
|
@@ -139,49 +192,42 @@ def get_all_attributes():
|
||||||
return all_attributes
|
return all_attributes
|
||||||
|
|
||||||
def policy(policy_file):
|
def policy(policy_file):
|
||||||
@ -1600,7 +1654,7 @@ index 5e7415c..b9cb9cc 100644
|
|||||||
except:
|
except:
|
||||||
raise ValueError(_("Failed to read %s policy file") % policy_file)
|
raise ValueError(_("Failed to read %s policy file") % policy_file)
|
||||||
|
|
||||||
|
-
|
||||||
-policy_file = selinux.selinux_current_policy_path()
|
-policy_file = selinux.selinux_current_policy_path()
|
||||||
-if not policy_file:
|
-if not policy_file:
|
||||||
- policy_file = __get_installed_policy()
|
- policy_file = __get_installed_policy()
|
||||||
@ -1643,10 +1697,18 @@ index 5e7415c..b9cb9cc 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
|
||||||
diff --git a/policycoreutils/sepolicy/sepolicy/generate.py b/policycoreutils/sepolicy/sepolicy/generate.py
|
diff --git a/policycoreutils/sepolicy/sepolicy/generate.py b/policycoreutils/sepolicy/sepolicy/generate.py
|
||||||
index 26f8390..19f6056 100644
|
index 26f8390..a23ce9b 100644
|
||||||
--- a/policycoreutils/sepolicy/sepolicy/generate.py
|
--- a/policycoreutils/sepolicy/sepolicy/generate.py
|
||||||
+++ b/policycoreutils/sepolicy/sepolicy/generate.py
|
+++ b/policycoreutils/sepolicy/sepolicy/generate.py
|
||||||
@@ -1037,7 +1037,8 @@ allow %s_t %s_t:%s_socket name_%s;
|
@@ -63,7 +63,6 @@ except IOError:
|
||||||
|
import __builtin__
|
||||||
|
__builtin__.__dict__['_'] = unicode
|
||||||
|
|
||||||
|
-user_types = sepolicy.info(sepolicy.ATTRIBUTE,"userdomain")[0]["types"]
|
||||||
|
methods = []
|
||||||
|
fn = defaults.interface_info()
|
||||||
|
try:
|
||||||
|
@@ -1037,7 +1036,8 @@ allow %s_t %s_t:%s_socket name_%s;
|
||||||
########################################
|
########################################
|
||||||
#
|
#
|
||||||
# %s local policy
|
# %s local policy
|
||||||
@ -1657,15 +1719,10 @@ index 26f8390..19f6056 100644
|
|||||||
newte += self.generate_process()
|
newte += self.generate_process()
|
||||||
newte += self.generate_network_types()
|
newte += self.generate_network_types()
|
||||||
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..da17c48 100755
|
index 25062da..b3c24e6 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
|
||||||
@@ -24,11 +24,12 @@
|
@@ -28,7 +28,7 @@ import string
|
||||||
#
|
|
||||||
__all__ = [ 'ManPage', 'HTMLManPages', 'manpage_domains', 'manpage_roles', 'gen_domains' ]
|
|
||||||
|
|
||||||
+from sepolicy import network
|
|
||||||
import string
|
|
||||||
import argparse
|
import argparse
|
||||||
import selinux
|
import selinux
|
||||||
import sepolicy
|
import sepolicy
|
||||||
@ -1674,7 +1731,7 @@ index 25062da..da17c48 100755
|
|||||||
|
|
||||||
import commands
|
import commands
|
||||||
import sys, os, re, time
|
import sys, os, re, time
|
||||||
@@ -416,40 +417,33 @@ class ManPage:
|
@@ -416,40 +416,33 @@ class ManPage:
|
||||||
"""
|
"""
|
||||||
Generate a Manpage on an SELinux domain in the specified path
|
Generate a Manpage on an SELinux domain in the specified path
|
||||||
"""
|
"""
|
||||||
@ -1695,14 +1752,15 @@ index 25062da..da17c48 100755
|
|||||||
- def __init__(self, domainname, path = "/tmp", html = False):
|
- def __init__(self, domainname, path = "/tmp", html = False):
|
||||||
+ def __init__(self, domainname, path = "/tmp", root="/", html = False):
|
+ def __init__(self, domainname, path = "/tmp", root="/", html = False):
|
||||||
self.html = html
|
self.html = html
|
||||||
+ self.root = root
|
- self.portrecs = network.portrecs
|
||||||
self.portrecs = network.portrecs
|
|
||||||
-
|
-
|
||||||
- fcpath = path + "/file_contexts"
|
- fcpath = path + "/file_contexts"
|
||||||
- if os.path.exists(fcpath):
|
- if os.path.exists(fcpath):
|
||||||
- self.fcpath = fcpath
|
- self.fcpath = fcpath
|
||||||
- else:
|
- else:
|
||||||
- self.fcpath = selinux.selinux_file_context_path()
|
- self.fcpath = selinux.selinux_file_context_path()
|
||||||
|
+ self.root = root
|
||||||
|
+ self.portrecs = gen_port_dict()[0]
|
||||||
+ self.domains = gen_domains()
|
+ self.domains = gen_domains()
|
||||||
+ self.all_domains = get_all_domains()
|
+ self.all_domains = get_all_domains()
|
||||||
+ self.all_attributes = get_all_attributes()
|
+ self.all_attributes = get_all_attributes()
|
||||||
@ -1732,7 +1790,7 @@ index 25062da..da17c48 100755
|
|||||||
self.booleans_dict = gen_bool_dict(self.xmlpath)
|
self.booleans_dict = gen_bool_dict(self.xmlpath)
|
||||||
|
|
||||||
if domainname.endswith("_t"):
|
if domainname.endswith("_t"):
|
||||||
@@ -947,13 +941,14 @@ semanage fcontext -a -t public_content_t "/var/%(domainname)s(/.*)?"
|
@@ -947,13 +940,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
|
||||||
@ -1749,7 +1807,7 @@ index 25062da..da17c48 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:]
|
||||||
@@ -1230,6 +1225,7 @@ The SELinux user %s_u is not able to terminal login.
|
@@ -1230,6 +1224,7 @@ The SELinux user %s_u is not able to terminal login.
|
||||||
""" % self.domainname)
|
""" % self.domainname)
|
||||||
|
|
||||||
def _network(self):
|
def _network(self):
|
||||||
@ -1757,6 +1815,46 @@ index 25062da..da17c48 100755
|
|||||||
self.fd.write("""
|
self.fd.write("""
|
||||||
.SH NETWORK
|
.SH NETWORK
|
||||||
""")
|
""")
|
||||||
|
diff --git a/policycoreutils/sepolicy/sepolicy/network.py b/policycoreutils/sepolicy/sepolicy/network.py
|
||||||
|
index 66efe26..a446d68 100755
|
||||||
|
--- a/policycoreutils/sepolicy/sepolicy/network.py
|
||||||
|
+++ b/policycoreutils/sepolicy/sepolicy/network.py
|
||||||
|
@@ -25,27 +25,6 @@ import sepolicy
|
||||||
|
search=sepolicy.search
|
||||||
|
info=sepolicy.info
|
||||||
|
|
||||||
|
-def _gen_port_dict():
|
||||||
|
- portrecsbynum = {}
|
||||||
|
- portrecs = {}
|
||||||
|
- for i in info(sepolicy.PORT):
|
||||||
|
- if i['low'] == i['high']:
|
||||||
|
- port = str(i['low'])
|
||||||
|
- else:
|
||||||
|
- port = "%s-%s" % (str(i['low']), str(i['high']))
|
||||||
|
-
|
||||||
|
- if (i['type'], i['protocol']) in portrecs:
|
||||||
|
- portrecs [(i['type'], i['protocol'])].append(port)
|
||||||
|
- else:
|
||||||
|
- portrecs [(i['type'], i['protocol'])] = [port]
|
||||||
|
-
|
||||||
|
- portrecsbynum[(i['low'], i['high'],i['protocol'])] = (i['type'], i['range'])
|
||||||
|
- return ( portrecs, portrecsbynum )
|
||||||
|
-portrecs, portrecsbynum = _gen_port_dict()
|
||||||
|
-
|
||||||
|
-port_types = sepolicy.info(sepolicy.ATTRIBUTE,"port_type")[0]["types"]
|
||||||
|
-domains = sepolicy.info(sepolicy.ATTRIBUTE,"domain")[0]["types"]
|
||||||
|
-
|
||||||
|
def get_types(src, tclass, perm):
|
||||||
|
allows=search([sepolicy.ALLOW],{sepolicy.SOURCE:src,sepolicy.CLASS:tclass, sepolicy.PERMS:perm})
|
||||||
|
nlist=[]
|
||||||
|
@@ -57,6 +36,7 @@ def get_types(src, tclass, perm):
|
||||||
|
|
||||||
|
|
||||||
|
def get_network_connect(src, protocol, perm):
|
||||||
|
+ portrecs, portrecsbynum = sepolicy.gen_port_dict()
|
||||||
|
d={}
|
||||||
|
tlist = get_types(src, "%s_socket" % protocol, [perm])
|
||||||
|
if len(tlist) > 0:
|
||||||
diff --git a/policycoreutils/setfiles/restorecon.8 b/policycoreutils/setfiles/restorecon.8
|
diff --git a/policycoreutils/setfiles/restorecon.8 b/policycoreutils/setfiles/restorecon.8
|
||||||
index 80b6d6e..07c5ee2 100644
|
index 80b6d6e..07c5ee2 100644
|
||||||
--- a/policycoreutils/setfiles/restorecon.8
|
--- a/policycoreutils/setfiles/restorecon.8
|
||||||
|
@ -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: 9%{?dist}
|
Release: 10%{?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
|
||||||
@ -324,6 +324,10 @@ The policycoreutils-restorecond package contains the restorecond service.
|
|||||||
%{_bindir}/systemctl try-restart restorecond.service >/dev/null 2>&1 || :
|
%{_bindir}/systemctl try-restart restorecond.service >/dev/null 2>&1 || :
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Feb 22 2013 Dan Walsh <dwalsh@redhat.com> - 2.1.14-10
|
||||||
|
- Fix sepolicy to be able to work on an SELinux disabled system.
|
||||||
|
- Needed to be able to build man pages in selinux-policy package
|
||||||
|
|
||||||
* Thu Feb 21 2013 Dan Walsh <dwalsh@redhat.com> - 2.1.14-9
|
* Thu Feb 21 2013 Dan Walsh <dwalsh@redhat.com> - 2.1.14-9
|
||||||
- Add yum to requires of policycoreutils-python since sepolicy requires it.
|
- Add yum to requires of policycoreutils-python since sepolicy requires it.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user