docs: def get_configs(self, configs):
  		"""Reads config files in, checking their security first
  		(in case passwords/sensitive info is in them).
  		"""
  		shutit_global.shutit_global_object.yield_to_draw()
  		cp  = LayerConfigParser()
  		fail_str = ''
  		files    = []
  		for config_file in configs:
  			if isinstance(config_file, tuple):
  				continue
  			if not shutit_util.is_file_secure(config_file):
  				fail_str = fail_str + '\nchmod 0600 ' + config_file
  				files.append(config_file)
  		if fail_str != '':
  			if shutit_global.shutit_global_object.interactive > 1:
  				fail_str = 'Files are not secure, mode should be 0600. Running the following commands to correct:\n' + fail_str + '\n'
  				# Actually show this to the user before failing...
  				self.log(fail_str,level=logging.INFO)
  				self.log('Do you want me to run this for you? (input y/n)',level=logging.INFO)
  				if shutit_global.shutit_global_object.interactive == 0 or shutit_util.util_raw_input(default='y') == 'y':
  					for f in files:
  						self.log('Correcting insecure file permissions on: ' + f,level=logging.INFO)
  						os.chmod(f,0o600)
  					# recurse
  					return self.get_configs(configs)
  			else:
  				for f in files:
  					self.log('Correcting insecure file permissions on: ' + f,level=logging.INFO)
  					os.chmod(f,0o600)
  				# recurse
  				return self.get_configs(configs)
  			self.fail(fail_str) # pragma: no cover
  		for config in configs:
  			if isinstance(config, tuple):
  				cp.readfp(config[1], filename=config[0])
  			else:
  				cp.read(config)
  		# Treat allowed_images as a special, additive case
  		self.build['shutit.core.module.allowed_images'] = cp.get_config_set('build', 'shutit.core.module.allowed_images')
  		return cp