mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-03-26 21:33:12 +00: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:
@@ -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)])
|
||||
|
||||
Reference in New Issue
Block a user