summaryrefslogtreecommitdiffstats
path: root/instdata.py
diff options
context:
space:
mode:
authorChris Lumens <clumens@redhat.com>2006-04-11 18:29:07 +0000
committerChris Lumens <clumens@redhat.com>2006-04-11 18:29:07 +0000
commit123a65b73ba52ae56256c965d610536cc24f5a71 (patch)
tree7071d45152b27682adf6399ea22fc03754e85193 /instdata.py
parent2413f486a9bac357c9aa19559cd33a6fd900f07a (diff)
downloadanaconda-123a65b73ba52ae56256c965d610536cc24f5a71.tar.gz
anaconda-123a65b73ba52ae56256c965d610536cc24f5a71.tar.xz
anaconda-123a65b73ba52ae56256c965d610536cc24f5a71.zip
Use libuser for handling the root password instead of a bunch of our own
stuff.
Diffstat (limited to 'instdata.py')
-rw-r--r--instdata.py42
1 files changed, 38 insertions, 4 deletions
diff --git a/instdata.py b/instdata.py
index 6645f4665..dfe750be5 100644
--- a/instdata.py
+++ b/instdata.py
@@ -21,7 +21,6 @@ import firewall
import security
import timezone
import desktop
-import users
import fsset
import bootloader
import partitions
@@ -39,6 +38,23 @@ import rhpl.keyboard as keyboard
import logging
log = logging.getLogger("anaconda")
+def cryptPassword(password, useMD5):
+ import crypt
+ import random
+
+ if useMD5:
+ salt = "$1$"
+ saltLen = 8
+ else:
+ salt = ""
+ saltLen = 2
+
+ for i in range(saltLen):
+ salt = salt + random.choice (string.letters +
+ string.digits + './')
+
+ return crypt.crypt (password, salt)
+
# Collector class for all data related to an install/upgrade.
class InstallData:
@@ -57,7 +73,7 @@ class InstallData:
self.firewall = firewall.Firewall()
self.security = security.Security()
self.timezone = timezone.Timezone()
- self.rootPassword = users.RootPassword ()
+ self.rootPassword = { "isCrypted": False, "password": "" }
self.auth = "--enableshadow --enablemd5"
self.desktop = desktop.Desktop()
self.upgrade = None
@@ -145,7 +161,20 @@ class InstallData:
self.firewall.write (instPath)
self.security.write (instPath)
- self.rootPassword.write (instPath, useMD5)
+
+ # User should already exist, just without a password.
+ import libuser
+ self.luAdmin = libuser.admin()
+ rootUser = self.luAdmin.lookupUserByName("root")
+
+ if self.rootPassword["isCrypted"]:
+ log.warning("password is crypted, setting to %s" % self.rootPassword["password"])
+ self.luAdmin.setpassUser(rootUser, self.rootPassword["password"], True)
+ self.luAdmin.modifyUser(rootUser)
+ else:
+ log.warning("password is not crypted, setting to %s" % self.rootPassword["password"])
+ self.luAdmin.setpassUser(rootUser, cryptPassword(self.rootPassword["password"], useMD5), True)
+ self.luAdmin.modifyUser(rootUser)
def writeKS(self, filename):
if self.auth.find("--enablemd5"):
@@ -199,7 +228,12 @@ class InstallData:
self.xsetup.writeKS(f, self.desktop)
self.network.writeKS(f)
self.zfcp.writeKS(f)
- self.rootPassword.writeKS(f, useMD5)
+
+ if self.rootPassword["isCrypted"]:
+ f.write("rootpw --iscrypted %s" % self.rootPassword["password"])
+ else:
+ f.write("rootpw --iscrypted %s" % cryptPassword(self.rootPassword["password"], useMD5))
+
self.firewall.writeKS(f)
if self.auth.strip() != "":
f.write("authconfig %s\n" % self.auth)