From 406505bfe58ad31182a4d301879693046885aac9 Mon Sep 17 00:00:00 2001 From: Brian Coca Date: Wed, 8 Mar 2017 10:23:07 -0500 Subject: [PATCH] fixes cache file modules with bad path permissions now module will fail to load and report an error (turned into warning as this should not be fatal) fixes #13093 --- lib/ansible/plugins/cache/base.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/ansible/plugins/cache/base.py b/lib/ansible/plugins/cache/base.py index 2847dbf2de..001ffaf44e 100644 --- a/lib/ansible/plugins/cache/base.py +++ b/lib/ansible/plugins/cache/base.py @@ -91,8 +91,11 @@ class BaseFileCacheModule(BaseCacheModule): try: os.makedirs(self._cache_dir) except (OSError,IOError) as e: - display.warning("error in '%s' cache plugin while trying to create cache dir %s : %s" % (self.plugin_name, self._cache_dir, to_bytes(e))) - return None + raise AnsibleError("error in '%s' cache plugin while trying to create cache dir %s : %s" % (self.plugin_name, self._cache_dir, to_bytes(e))) + else: + for x in (os.R_OK, os.W_OK, os.X_OK): + if not os.access(self._cache_dir, x): + raise AnsibleError("error in '%s' cache, configured path (%s) does not have necessary permissions (rwx), disabling plugin" % (self.plugin_name, self._cache_dir)) def get(self, key): """ This checks the in memory cache first as the fact was not expired at 'gather time' @@ -146,7 +149,7 @@ class BaseFileCacheModule(BaseCacheModule): return False else: display.warning("error in '%s' cache plugin while trying to stat %s : %s" % (self.plugin_name, cachefile, to_bytes(e))) - pass + return False if time.time() - st.st_mtime <= self._timeout: return False