Blob Blame History Raw
diff -Naur old/authinfo.py new/authinfo.py
--- old/authinfo.py	2017-04-28 12:04:32.204470232 +0200
+++ new/authinfo.py	2017-04-28 12:10:10.534170041 +0200
@@ -1432,6 +1432,7 @@
 		self.sssdConfig = None
 		self.sssdDomain = None
 		self.forceSSSDUpdate = None
+		self.sssdConfigPresent = False
 		if SSSDConfig:
 			try:
 				self.sssdConfig = SSSDConfig.SSSDConfig()
@@ -1915,6 +1916,7 @@
 		self.sssdConfig = SSSDConfig.SSSDConfig()
 		try:
 			self.sssdConfig.import_config(all_configs[CFG_SSSD].origPath)
+			self.sssdConfigPresent = True
 		except (IOError, SSSDConfig.ParsingError):
 			self.sssdConfig = SSSDConfig.SSSDConfig()
 			self.sssdConfig.new_config()
@@ -3321,9 +3323,14 @@
 				domain.remove_provider(subtype)
 			domain.add_provider(newprovider, subtype)
 
-	def writeSSSDPAM(self):
+	def writeSSSDPAM(self, write_config):
 		if not self.sssdConfig:
 			return True
+		
+		if not self.sssdConfigPresent and not self.implicitSSSD:
+			# do not write to sssd.conf since the file does not exist yet and
+			# we are not creating the domain ourselves
+			return True
 
 		try:
 			pam = self.sssdConfig.get_service('pam')
@@ -3339,10 +3346,11 @@
 				pass
 
 		self.sssdConfig.save_service(pam)
-		try:
-			self.sssdConfig.write(all_configs[CFG_SSSD].origPath)
-		except IOError:
-			pass
+		if write_config:
+			try:
+				self.sssdConfig.write(all_configs[CFG_SSSD].origPath)
+			except IOError:
+				pass
 
 		return True
 
@@ -3352,7 +3360,8 @@
 
 		all_configs[CFG_SSSD].backup(self.backupDir)
 		
-		self.writeSSSDPAM()
+		# do not write to the file yet since we will write all changes at ones
+		self.writeSSSDPAM(False)
 
 		if self.enableIPAv2:
 			# just save the backup
@@ -4172,7 +4181,7 @@
 			if self.implicitSSSD or self.implicitSSSDAuth:
 				ret = ret and self.writeSSSD()
 			elif self.enableSSSDAuth:
-				ret = ret and self.writeSSSDPAM()
+				ret = ret and self.writeSSSDPAM(True)
 			ret = ret and self.writeNSS()
 			ret = ret and self.writePAM()
 			ret = ret and self.writeSysconfig()