summaryrefslogtreecommitdiffstats
path: root/pyanaconda
diff options
context:
space:
mode:
authorChris Lumens <clumens@redhat.com>2012-07-18 11:57:52 -0400
committerChris Lumens <clumens@redhat.com>2012-07-18 13:38:19 -0400
commit17f87b00fee72e243f6ec80dc5f58739887c044f (patch)
tree960552ad16eed3d253de1f7c460789c79da40be7 /pyanaconda
parent0dd5b9940a35465b4d1fe21690e643a012d57cb7 (diff)
downloadanaconda-17f87b00fee72e243f6ec80dc5f58739887c044f.tar.gz
anaconda-17f87b00fee72e243f6ec80dc5f58739887c044f.tar.xz
anaconda-17f87b00fee72e243f6ec80dc5f58739887c044f.zip
Update the group, rootpw, and user commands to be called from doInstall.
Diffstat (limited to 'pyanaconda')
-rw-r--r--pyanaconda/__init__.py10
-rw-r--r--pyanaconda/install.py8
-rw-r--r--pyanaconda/kickstart.py28
-rw-r--r--pyanaconda/users.py40
4 files changed, 43 insertions, 43 deletions
diff --git a/pyanaconda/__init__.py b/pyanaconda/__init__.py
index 7991afbf3..eb44ca90e 100644
--- a/pyanaconda/__init__.py
+++ b/pyanaconda/__init__.py
@@ -83,7 +83,6 @@ class Anaconda(object):
self.updateSrc = None
self.upgrade = flags.cmdline.has_key("preupgrade")
self.upgradeRoot = None
- self._users = None
self.mehConfig = None
self.clearPartTypeSelection = None # User's GUI selection
self.clearPartTypeSystem = None # System's selection
@@ -185,14 +184,6 @@ class Anaconda(object):
return []
@property
- def users(self):
- if not self._users:
- import users
- self._users = users.Users(self)
-
- return self._users
-
- @property
def storage(self):
if not self._storage:
import storage
@@ -281,6 +272,5 @@ class Anaconda(object):
self.network.disableNMForStorageDevices(self)
self.network.autostartFCoEDevices(self)
self.desktop.write()
- self.users.write()
self.security.write()
self.firewall.write()
diff --git a/pyanaconda/install.py b/pyanaconda/install.py
index 3f43007c9..be31e75b5 100644
--- a/pyanaconda/install.py
+++ b/pyanaconda/install.py
@@ -24,6 +24,7 @@ from pyanaconda.constants import ROOT_PATH
from pyanaconda.storage import turnOnFilesystems
from pyanaconda.bootloader import writeBootLoader
from pyanaconda.progress import progress_report
+from pyanaconda.users import createLuserConf, Users
import gettext
_ = lambda x: gettext.ldgettext("anaconda", x)
@@ -77,6 +78,13 @@ def doInstall(storage, payload, ksdata, instClass):
ksdata.services.execute(storage, ksdata, instClass)
ksdata.keyboard.execute(storage, ksdata, instClass)
+ # Creating users and groups requires some pre-configuration.
+ u = Users()
+ createLuserConf(ROOT_PATH, algoname=u.getPassAlgo(ksdata.authconfig.authconfig))
+ ksdata.rootpw.execute(storage, ksdata, instClass, u)
+ ksdata.group.execute(storage, ksdata, instClass, u)
+ ksdata.user.execute(storage, ksdata, instClass, u)
+
runPostScripts(ksdata.scripts)
# Write the kickstart file to the installed system (or, copy the input
diff --git a/pyanaconda/kickstart.py b/pyanaconda/kickstart.py
index de46e38c4..585911937 100644
--- a/pyanaconda/kickstart.py
+++ b/pyanaconda/kickstart.py
@@ -431,6 +431,16 @@ class Firstboot(commands.firstboot.FC3_Firstboot):
stdout="/dev/tty5", stderr="/dev/tty5",
root=ROOT_PATH)
+class Group(commands.group.F12_Group):
+ def execute(self, storage, ksdata, instClass, users):
+ algo = users.getPassAlgo(ksdata.authconfig.authconfig)
+
+ for grp in self.groupList:
+ kwargs = grp.__dict__
+ kwargs.update({"root": ROOT_PATH})
+ if not users.createGroup(grp.name, **kwargs):
+ log.error("Group %s already exists, not creating." % grp.name)
+
class IgnoreDisk(commands.ignoredisk.RHEL6_IgnoreDisk):
def parse(self, args):
retval = commands.ignoredisk.RHEL6_IgnoreDisk.parse(self, args)
@@ -1153,6 +1163,11 @@ class RaidData(commands.raid.F15_RaidData):
parents=request)
storage.createDevice(luksdev)
+class RootPw(commands.rootpw.F8_RootPw):
+ def execute(self, storage, ksdata, instClass, users):
+ algo = users.getPassAlgo(ksdata.authconfig.authconfig)
+ users.setRootPassword(self.password, self.isCrypted, self.lock, algo)
+
class Services(commands.services.FC6_Services):
def execute(self, storage, ksdata, instClass):
disabled = map(lambda s: s + ".service", self.disabled)
@@ -1182,6 +1197,16 @@ class Timezone(commands.timezone.F18_Timezone):
ntp.save_servers_to_config(self.ntpservers,
conf_file_path=chronyd_conf_path)
+class User(commands.user.F12_User):
+ def execute(self, storage, ksdata, instClass, users):
+ algo = users.getPassAlgo(ksdata.authconfig.authconfig)
+
+ for usr in self.userList:
+ kwargs = usr.__dict__
+ kwargs.update({"algo": algo, "root": ROOT_PATH})
+ if not users.createUser(usr.name, **kwargs):
+ log.error("User %s already exists, not creating." % usr.name)
+
class VolGroupData(commands.volgroup.FC16_VolGroupData):
def execute(self, storage, ksdata, instClass):
pvs = []
@@ -1268,14 +1293,17 @@ commandMap = {
"dmraid": DmRaid,
"fcoe": Fcoe,
"firstboot": Firstboot,
+ "group": Group,
"ignoredisk": IgnoreDisk,
"iscsi": Iscsi,
"iscsiname": IscsiName,
"keyboard": Keyboard,
"logging": Logging,
"multipath": MultiPath,
+ "rootpw": RootPw,
"services": Services,
"timezone": Timezone,
+ "user": User,
"xconfig": XConfig,
"zfcp": ZFCP,
}
diff --git a/pyanaconda/users.py b/pyanaconda/users.py
index 9c30f0ed0..6a9e2b9d5 100644
--- a/pyanaconda/users.py
+++ b/pyanaconda/users.py
@@ -95,10 +95,8 @@ def cryptPassword(password, algo=None):
return crypt.crypt (password, saltstr)
class Users:
- def __init__ (self, anaconda):
- self.anaconda = anaconda
+ def __init__ (self):
self.admin = libuser.admin()
- self.rootPassword = { "isCrypted": False, "password": "", "lock": False }
def createGroup (self, group_name, **kwargs):
"""Create a new user on the system with the given name. Optional kwargs:
@@ -273,13 +271,12 @@ class Users:
# Reads the auth string and returns a string indicating our desired
# password encoding algorithm.
- def getPassAlgo(self):
- if self.anaconda.security.auth.find("--enablemd5") != -1 or \
- self.anaconda.security.auth.find("--passalgo=md5") != -1:
+ def getPassAlgo(self, authconfigStr):
+ if authconfigStr.find("--enablemd5") != -1 or authconfigStr.find("--passalgo=md5") != -1:
return 'md5'
- elif self.anaconda.security.auth.find("--passalgo=sha256") != -1:
+ elif authconfigStr.find("--passalgo=sha256") != -1:
return 'sha256'
- elif self.anaconda.security.auth.find("--passalgo=sha512") != -1:
+ elif authconfigStr.find("--passalgo=sha512") != -1:
return 'sha512'
else:
return None
@@ -297,28 +294,5 @@ class Users:
self.admin.modifyUser(user)
- def setRootPassword(self, algo=None):
- return self.setUserPassword("root", self.rootPassword["password"],
- self.rootPassword["isCrypted"],
- self.rootPassword["lock"], algo)
-
- def write(self):
- # make sure crypt_style in libuser.conf matches the salt we're using
- createLuserConf(ROOT_PATH, algoname=self.getPassAlgo())
-
- # User should already exist, just without a password.
- self.setRootPassword(algo=self.getPassAlgo())
-
- if self.anaconda.ksdata:
- for gd in self.anaconda.ksdata.group.groupList:
- kwargs = gd.__dict__
- kwargs.update({"root": ROOT_PATH})
- if not self.createGroup(gd.name, **kwargs):
- log.error("Group %s already exists, not creating." % gd.name)
-
- for ud in self.anaconda.ksdata.user.userList:
- kwargs = ud.__dict__
- kwargs.update({"algo": self.getPassAlgo(),
- "root": ROOT_PATH})
- if not self.createUser(ud.name, **kwargs):
- log.error("User %s already exists, not creating." % ud.name)
+ def setRootPassword(self, password, isCrypted=False, isLocked=False, algo=None):
+ return self.setUserPassword("root", password, isCrypted, isLocked, algo)