Viewing file: genhomedircon (11.36 KB) -rwxr-xr-x Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#! /usr/bin/python -E
# Copyright (C) 2004 Tresys Technology, LLC
# see file 'COPYING' for use and warranty information
#
# genhomedircon - this script is used to generate file context
# configuration entries for user home directories based on their
# default prefixes and is run when building the policy. Specifically, we
# replace HOME_ROOT, HOME_DIR, and ROLE macros in .fc files with
# generic and user-specific values.
#
# Based off original script by Dan Walsh,
#
# ASSUMPTIONS:
#
# The file CONTEXTDIR/files/homedir_template exists. This file is used to
# set up the home directory context for each real user.
#
# If a user is not listed in CONTEXTDIR/seusers, he will default to user_u, prefix user
#
# "Real" users (as opposed to system users) are those whose UID is greater than
# or equal STARTING_UID (usually 500) and whose login is not a member of
# EXCLUDE_LOGINS. Users who are explicitly defined in CONTEXTDIR/seusers
# are always "real" (including root, in the default configuration).
#
#
import sys, os, pwd, string, getopt, re
from semanage import *;
import selinux
import gettext
gettext.install('policycoreutils')
def grep(file, var):
ret = ""
fd = open(file, 'r')
for i in fd.readlines():
if re.search(var, i, 0) != None:
ret = i
break
fd.close()
return ret
def findval(file, var, delim = ""):
val = ""
try:
fd = open(file, 'r')
for i in fd.readlines():
if i.startswith(var) == 1:
if delim == "":
val = i.split()[1]
else:
val = i.split(delim)[1]
val = val.split("#")[0]
val = val.strip()
fd.close()
except:
val = ""
return val
def getStartingUID():
starting_uid = sys.maxint
uid_min = findval("/etc/login.defs", "UID_MIN")
if uid_min != "":
uid_min = uid_min.split("#")[0]
uid_min = uid_min.strip()
if int(uid_min) < starting_uid:
starting_uid = int(uid_min)
uid_min = findval("/etc/libuser.conf", "LU_UIDNUMBER", "=")
if uid_min != "":
uid_min = uid_min.split("#")[0]
uid_min = uid_min.strip()
if int(uid_min) < starting_uid:
starting_uid = int(uid_min)
if starting_uid == sys.maxint:
starting_uid = 500
return starting_uid
def getDefaultHomeDir():
ret = []
homedir = findval("/etc/default/useradd", "HOME", "=")
if homedir != "" and not homedir in ret:
ret.append(homedir)
homedir = findval("/etc/libuser.conf", "LU_HOMEDIRECTORY", "=")
if homedir != "" and not homedir in ret:
ret.append(homedir)
if ret == []:
ret.append("/home")
# Add /export/home if it exists
# Some customers use this for automounted homedirs
if os.path.exists("/export/home"):
ret.append("/export/home")
return ret
def getSELinuxType(directory):
val = findval(directory+"/config", "SELINUXTYPE", "=")
if val != "":
return val
return "targeted"
def usage(rc=0, error = ""):
if error != "":
sys.stderr.write("%s\n" % error)
rc = 1
sys.stderr.write("Usage: %s [ -d selinuxdir ] [-n bool(false)
|