mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
fix: sudosu not working on some BSD machines (#8214)
* fix: sudosu not working on some BSD machines * fix: sudosu: added a flag (`alt_method`) to enhance compatibility with more versions of `su` * Update changelogs/fragments/8214-sudosu-not-working-on-some-BSD-machines.yml Co-authored-by: Felix Fontein <felix@fontein.de> * Update plugins/become/sudosu.py Co-authored-by: Felix Fontein <felix@fontein.de> * Update plugins/become/sudosu.py Co-authored-by: Felix Fontein <felix@fontein.de> * Update plugins/become/sudosu.py Co-authored-by: Felix Fontein <felix@fontein.de> * Update plugins/become/sudosu.py Co-authored-by: Felix Fontein <felix@fontein.de> * fix: sudosu: lint --------- Co-authored-by: Felix Fontein <felix@fontein.de>
This commit is contained in:
parent
9dd2b71d04
commit
83318c36aa
2 changed files with 21 additions and 1 deletions
|
@ -0,0 +1,2 @@
|
|||
minor_changes:
|
||||
- sudosu become plugin - added an option (``alt_method``) to enhance compatibility with more versions of ``su`` (https://github.com/ansible-collections/community.general/pull/8214).
|
|
@ -55,6 +55,21 @@ DOCUMENTATION = """
|
|||
ini:
|
||||
- section: sudo_become_plugin
|
||||
key: password
|
||||
alt_method:
|
||||
description:
|
||||
- Whether to use an alternative method to call C(su). Instead of running C(su -l user /path/to/shell -c command),
|
||||
it runs C(su -l user -c command).
|
||||
- Use this when the default one is not working on your system.
|
||||
required: false
|
||||
type: boolean
|
||||
ini:
|
||||
- section: community.general.sudosu
|
||||
key: alternative_method
|
||||
vars:
|
||||
- name: ansible_sudosu_alt_method
|
||||
env:
|
||||
- name: ANSIBLE_SUDOSU_ALT_METHOD
|
||||
version_added: 9.2.0
|
||||
"""
|
||||
|
||||
|
||||
|
@ -89,4 +104,7 @@ class BecomeModule(BecomeBase):
|
|||
if user:
|
||||
user = '%s' % (user)
|
||||
|
||||
return ' '.join([becomecmd, flags, prompt, 'su -l', user, self._build_success_command(cmd, shell)])
|
||||
if self.get_option('alt_method'):
|
||||
return ' '.join([becomecmd, flags, prompt, "su -l", user, "-c", self._build_success_command(cmd, shell, True)])
|
||||
else:
|
||||
return ' '.join([becomecmd, flags, prompt, 'su -l', user, self._build_success_command(cmd, shell)])
|
||||
|
|
Loading…
Reference in a new issue