From 25f8b9829dd42c013e8a84a0868c22829db2ce27 Mon Sep 17 00:00:00 2001 From: Brian Coca Date: Fri, 28 Oct 2022 19:17:13 -0400 Subject: [PATCH] mention acl in permissions errors (#79209) (#79251) as chmod/mode is not the only thing we attempt and Ubuntu not shipping acl in newer versions can lead to some confusion fixes #79146 (cherry picked from commit 0f18ddca9f4b04cacd85a8a54a6fcc8f8b2ee38e) --- changelogs/fragments/mention_acl.yml | 2 ++ lib/ansible/plugins/action/__init__.py | 8 ++++---- test/units/plugins/action/test_action.py | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) create mode 100644 changelogs/fragments/mention_acl.yml diff --git a/changelogs/fragments/mention_acl.yml b/changelogs/fragments/mention_acl.yml new file mode 100644 index 00000000000..bb8093d7c9a --- /dev/null +++ b/changelogs/fragments/mention_acl.yml @@ -0,0 +1,2 @@ +bugfixes: + - updated error messages to include 'acl' and not just mode changes when failing to set required permissions on remote. diff --git a/lib/ansible/plugins/action/__init__.py b/lib/ansible/plugins/action/__init__.py index 9ee9a1c1222..52795eb8e21 100644 --- a/lib/ansible/plugins/action/__init__.py +++ b/lib/ansible/plugins/action/__init__.py @@ -660,7 +660,7 @@ class ActionBase(ABC): res = self._remote_chmod(remote_paths, 'u+x') if res['rc'] != 0: raise AnsibleError( - 'Failed to set file mode on remote temporary files ' + 'Failed to set file mode or acl on remote temporary files ' '(rc: {0}, err: {1})'.format( res['rc'], to_native(res['stderr']))) @@ -675,9 +675,9 @@ class ActionBase(ABC): if remote_user in self._get_admin_users(): raise AnsibleError( 'Failed to change ownership of the temporary files Ansible ' - 'needs to create despite connecting as a privileged user. ' - 'Unprivileged become user would be unable to read the ' - 'file.') + '(via chmod nor setfacl) needs to create despite connecting as a ' + 'privileged user. Unprivileged become user would be unable to read' + ' the file.') # Step 3d: Try macOS's special chmod + ACL # macOS chmod's +a flag takes its own argument. As a slight hack, we diff --git a/test/units/plugins/action/test_action.py b/test/units/plugins/action/test_action.py index 78c6fe05719..3334a7b9fd4 100644 --- a/test/units/plugins/action/test_action.py +++ b/test/units/plugins/action/test_action.py @@ -425,7 +425,7 @@ class TestActionBase(unittest.TestCase): 'stderr': '', } assertThrowRegex( - 'Failed to set file mode on remote temporary file', + 'Failed to set file mode or acl on remote temporary files', execute=True) action_base._remote_chmod.return_value = { 'rc': 0,