aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcgzones <cgzones@googlemail.com>2017-03-18 18:38:20 +0100
committerJason Zaman <jason@perfinion.com>2017-03-30 19:39:49 +0800
commit115f6440d2873e511f8a30e119edde4a387e38a9 (patch)
tree8ff189a1a431a787d92f6bfacdba77131bcea22b /support
parenttravis: run make xml, html and install(-.*)? targets (diff)
downloadhardened-refpolicy-115f6440d2873e511f8a30e119edde4a387e38a9.tar.gz
hardened-refpolicy-115f6440d2873e511f8a30e119edde4a387e38a9.tar.bz2
hardened-refpolicy-115f6440d2873e511f8a30e119edde4a387e38a9.zip
fix travis and genhomedircon
Diffstat (limited to 'support')
-rw-r--r--support/genhomedircon.py49
-rw-r--r--support/policyvers.py5
2 files changed, 35 insertions, 19 deletions
diff --git a/support/genhomedircon.py b/support/genhomedircon.py
index e14f9fbf3..036f5cc93 100644
--- a/support/genhomedircon.py
+++ b/support/genhomedircon.py
@@ -40,13 +40,26 @@
# are always "real" (including root, in the default configuration).
#
-import subprocess, sys, os, pwd, getopt, re
+import sys, os, pwd, getopt, re
EXCLUDE_LOGINS=["/sbin/nologin", "/bin/false"]
+# Python 2/3 wrapper
+def getstatusoutput_wrapper(cmd):
+ if sys.version_info.major is 2:
+ import commands
+ return commands.getstatusoutput(cmd)
+ elif sys.version_info.major is 3:
+ import subprocess
+ return subprocess.getstatusoutput(cmd)
+ else:
+ print("Unsupported Python major version: " + sys.version_info.major)
+ exit(1)
+
+
def getStartingUID():
starting_uid = 99999
- rc=subprocess.getstatusoutput("grep -h '^UID_MIN' /etc/login.defs")
+ rc=getstatusoutput_wrapper("grep -h '^UID_MIN' /etc/login.defs")
if rc[0] == 0:
uid_min = re.sub("^UID_MIN[^0-9]*", "", rc[1])
#stip any comment from the end of the line
@@ -54,7 +67,7 @@ def getStartingUID():
uid_min = uid_min.strip()
if int(uid_min) < starting_uid:
starting_uid = int(uid_min)
- rc=subprocess.getstatusoutput("grep -h '^LU_UIDNUMBER' /etc/libuser.conf")
+ rc=getstatusoutput_wrapper("grep -h '^LU_UIDNUMBER' /etc/libuser.conf")
if rc[0] == 0:
lu_uidnumber = re.sub("^LU_UIDNUMBER[^0-9]*", "", rc[1])
#stip any comment from the end of the line
@@ -87,7 +100,7 @@ def getPrefixes():
return prefixes
def getUsers(filecontextdir):
- rc = subprocess.getstatusoutput("grep ^user %s/users" % filecontextdir)
+ rc = getstatusoutput_wrapper("grep ^user %s/users" % filecontextdir)
udict = {}
if rc[0] == 0:
ulist = rc[1].strip().split("\n")
@@ -113,7 +126,7 @@ def getUsers(filecontextdir):
return udict
def update(filecontext, user, prefs):
- rc=subprocess.getstatusoutput("grep -h '^HOME_DIR' %s | grep -v vmware | sed -e 's|HOME_DIR|%s|' -e 's/ROLE/%s/' -e 's/system_u/%s/'" % (filecontext, prefs["home"], prefs["role"], user))
+ rc=getstatusoutput_wrapper("grep -h '^HOME_DIR' %s | grep -v vmware | sed -e 's|HOME_DIR|%s|' -e 's/ROLE/%s/' -e 's/system_u/%s/'" % (filecontext, prefs["home"], prefs["role"], user))
if rc[0] == 0:
print(rc[1])
else:
@@ -128,7 +141,7 @@ def oldgenhomedircon(filecontextdir, filecontext):
usage()
#We are going to define home directory used by libuser and show-utils as a home directory root
prefixes = {}
- rc=subprocess.getstatusoutput("grep -h '^HOME' /etc/default/useradd")
+ rc=getstatusoutput_wrapper("grep -h '^HOME' /etc/default/useradd")
if rc[0] == 0:
homedir = rc[1].split("=")[1]
homedir = homedir.split("#")[0]
@@ -143,7 +156,7 @@ def oldgenhomedircon(filecontextdir, filecontext):
sys.stderr.flush()
- rc=subprocess.getstatusoutput("grep -h '^LU_HOMEDIRECTORY' /etc/libuser.conf")
+ rc=getstatusoutput_wrapper("grep -h '^LU_HOMEDIRECTORY' /etc/libuser.conf")
if rc[0] == 0:
homedir = rc[1].split("=")[1]
homedir = homedir.split("#")[0]
@@ -165,7 +178,7 @@ def oldgenhomedircon(filecontextdir, filecontext):
#this works by grepping the file_contexts for
# 1. ^/ makes sure this is not a comment
# 2. prints only the regex in the first column first cut on \t then on space
- rc=subprocess.getstatusoutput("grep \"^/\" %s | cut -f 1 | cut -f 1 -d \" \" " % (sys.argv[2]) )
+ rc=getstatusoutput_wrapper("grep \"^/\" %s | cut -f 1 | cut -f 1 -d \" \" " % (sys.argv[2]) )
if rc[0] == 0:
prefix_regex = rc[1].split("\n")
else:
@@ -204,7 +217,7 @@ def oldgenhomedircon(filecontextdir, filecontext):
sed_dir = "h; s|^HOME_DIR|%s/[^/]+|; s|ROLE_|user_|" % (prefixes.keys() + "/[^/]+|; s|ROLE_|user_|; p; g; s|^HOME_DIR|")
# Fill in HOME_ROOT, HOME_DIR, and ROLE for users not explicitly defined in /etc/security/selinux/src/policy/users
- rc=subprocess.getstatusoutput("sed -e \"/^HOME_ROOT/{%s}\" -e \"/^HOME_DIR/{%s}\" %s" % (sed_root, sed_dir, filecontext))
+ rc=getstatusoutput_wrapper("sed -e \"/^HOME_ROOT/{%s}\" -e \"/^HOME_DIR/{%s}\" %s" % (sed_root, sed_dir, filecontext))
if rc[0] == 0:
print(rc[1])
else:
@@ -225,7 +238,7 @@ def oldgenhomedircon(filecontextdir, filecontext):
def getDefaultHomeDir():
ret = []
- rc=subprocess.getstatusoutput("grep -h '^HOME' /etc/default/useradd")
+ rc=getstatusoutput_wrapper("grep -h '^HOME' /etc/default/useradd")
if rc[0] == 0:
homedir = rc[1].split("=")[1]
homedir = homedir.split("#")[0]
@@ -238,7 +251,7 @@ def getDefaultHomeDir():
sys.stderr.write("%s\n" % rc[1])
sys.stderr.write("You do not have access to /etc/default/useradd HOME=\n")
sys.stderr.flush()
- rc=subprocess.getstatusoutput("grep -h '^LU_HOMEDIRECTORY' /etc/libuser.conf")
+ rc=getstatusoutput_wrapper("grep -h '^LU_HOMEDIRECTORY' /etc/libuser.conf")
if rc[0] == 0:
homedir = rc[1].split("=")[1]
homedir = homedir.split("#")[0]
@@ -256,7 +269,7 @@ def getDefaultHomeDir():
return ret
def getSELinuxType(directory):
- rc=subprocess.getstatusoutput("grep ^SELINUXTYPE= %s/config" % directory)
+ rc=getstatusoutput_wrapper("grep ^SELINUXTYPE= %s/config" % directory)
if rc[0]==0:
return rc[1].split("=")[-1].strip()
return "targeted"
@@ -299,7 +312,7 @@ class selinuxConfig:
return self.getFileContextDir()+"/homedir_template"
def getHomeRootContext(self, homedir):
- rc=subprocess.getstatusoutput("grep HOME_ROOT %s | sed -e \"s|^HOME_ROOT|%s|\"" % ( self.getHomeDirTemplate(), homedir))
+ rc=getstatusoutput_wrapper("grep HOME_ROOT %s | sed -e \"s|^HOME_ROOT|%s|\"" % ( self.getHomeDirTemplate(), homedir))
if rc[0] == 0:
return rc[1]+"\n"
else:
@@ -318,10 +331,10 @@ class selinuxConfig:
def getUsers(self):
users=""
- rc = subprocess.getstatusoutput('grep "^user" %s' % self.getSystemUsersFile())
+ rc = getstatusoutput_wrapper('grep "^user" %s' % self.getSystemUsersFile())
if rc[0] == 0:
users+=rc[1]+"\n"
- rc = subprocess.getstatusoutput("grep ^user %s" % self.getUsersFile())
+ rc = getstatusoutput_wrapper("grep ^user %s" % self.getUsersFile())
if rc[0] == 0:
users+=rc[1]
udict = {}
@@ -351,7 +364,7 @@ class selinuxConfig:
def getHomeDirContext(self, user, home, role):
ret="\n\n#\n# Context for user %s\n#\n\n" % user
- rc=subprocess.getstatusoutput("grep '^HOME_DIR' %s | sed -e 's|HOME_DIR|%s|' -e 's/ROLE/%s/' -e 's/system_u/%s/'" % (self.getHomeDirTemplate(), home, role, user))
+ rc=getstatusoutput_wrapper("grep '^HOME_DIR' %s | sed -e 's|HOME_DIR|%s|' -e 's/ROLE/%s/' -e 's/system_u/%s/'" % (self.getHomeDirTemplate(), home, role, user))
return ret + rc[1] + "\n"
def genHomeDirContext(self):
@@ -363,12 +376,12 @@ class selinuxConfig:
return ret+"\n"
def checkExists(self, home):
- if subprocess.getstatusoutput("grep -E '^%s[^[:alnum:]_-]' %s" % (home, self.getFileContextFile()))[0] == 0:
+ if getstatusoutput_wrapper("grep -E '^%s[^[:alnum:]_-]' %s" % (home, self.getFileContextFile()))[0] == 0:
return 0
#this works by grepping the file_contexts for
# 1. ^/ makes sure this is not a comment
# 2. prints only the regex in the first column first cut on \t then on space
- rc=subprocess.getstatusoutput("grep \"^/\" %s | cut -f 1 | cut -f 1 -d \" \" " % self.getFileContextFile() )
+ rc=getstatusoutput_wrapper("grep \"^/\" %s | cut -f 1 | cut -f 1 -d \" \" " % self.getFileContextFile() )
if rc[0] == 0:
prefix_regex = rc[1].split("\n")
else:
diff --git a/support/policyvers.py b/support/policyvers.py
index 6e1c32216..87033586c 100644
--- a/support/policyvers.py
+++ b/support/policyvers.py
@@ -1,7 +1,10 @@
#!/usr/bin/env python3
try:
- import selinux
+ import warnings
+ with warnings.catch_warnings():
+ warnings.filterwarnings("ignore", category=PendingDeprecationWarning)
+ import selinux
if selinux.is_selinux_enabled():
print(selinux.security_policyvers())