mirror of https://github.com/jumpserver/jumpserver
				
				
				
			perf: 改密 推送 可以对自己操作 同时设置su_enabled 可提权 (#10349)
Co-authored-by: feng <1304903146@qq.com>pull/10354/head
							parent
							
								
									9eec2909ed
								
							
						
					
					
						commit
						58d055f114
					
				| 
						 | 
				
			
			@ -72,14 +72,14 @@ class ChangeSecretManager(AccountBasePlaybookManager):
 | 
			
		|||
            return []
 | 
			
		||||
 | 
			
		||||
        asset = privilege_account.asset
 | 
			
		||||
        accounts = asset.accounts.exclude(username=privilege_account.username)
 | 
			
		||||
        accounts = asset.accounts.all()
 | 
			
		||||
        accounts = accounts.filter(id__in=self.account_ids)
 | 
			
		||||
        if self.secret_type:
 | 
			
		||||
            accounts = accounts.filter(secret_type=self.secret_type)
 | 
			
		||||
 | 
			
		||||
        if settings.CHANGE_AUTH_PLAN_SECURE_MODE_ENABLED:
 | 
			
		||||
            accounts = accounts.filter(privileged=False).exclude(
 | 
			
		||||
                username__in=['root', 'administrator']
 | 
			
		||||
                username__in=['root', 'administrator', privilege_account.username]
 | 
			
		||||
            )
 | 
			
		||||
        return accounts
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -166,6 +166,7 @@ class BasePlaybookManager:
 | 
			
		|||
            account_prefer=self.ansible_account_prefer,
 | 
			
		||||
            account_policy=self.ansible_account_policy,
 | 
			
		||||
            host_callback=self.host_callback,
 | 
			
		||||
            task_type=self.__class__.method_type(),
 | 
			
		||||
        )
 | 
			
		||||
        inventory.write_to_file(inventory_path)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,12 +5,17 @@ from collections import defaultdict
 | 
			
		|||
 | 
			
		||||
from django.utils.translation import gettext as _
 | 
			
		||||
 | 
			
		||||
from accounts.const import AutomationTypes
 | 
			
		||||
 | 
			
		||||
__all__ = ['JMSInventory']
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class JMSInventory:
 | 
			
		||||
    def __init__(self, assets, account_policy='privileged_first',
 | 
			
		||||
                 account_prefer='root,Administrator', host_callback=None, exclude_localhost=False):
 | 
			
		||||
    def __init__(
 | 
			
		||||
            self, assets, account_policy='privileged_first',
 | 
			
		||||
            account_prefer='root,Administrator', host_callback=None,
 | 
			
		||||
            exclude_localhost=False, task_type=None
 | 
			
		||||
    ):
 | 
			
		||||
        """
 | 
			
		||||
        :param assets:
 | 
			
		||||
        :param account_prefer: account username name if not set use account_policy
 | 
			
		||||
| 
						 | 
				
			
			@ -22,6 +27,7 @@ class JMSInventory:
 | 
			
		|||
        self.host_callback = host_callback
 | 
			
		||||
        self.exclude_hosts = {}
 | 
			
		||||
        self.exclude_localhost = exclude_localhost
 | 
			
		||||
        self.task_type = task_type
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def clean_assets(assets):
 | 
			
		||||
| 
						 | 
				
			
			@ -92,6 +98,12 @@ class JMSInventory:
 | 
			
		|||
                host['ansible_become_password'] = su_from.secret
 | 
			
		||||
            else:
 | 
			
		||||
                host['ansible_become_password'] = account.secret
 | 
			
		||||
        elif platform.su_enabled and not su_from and \
 | 
			
		||||
                self.task_type in (AutomationTypes.change_secret, AutomationTypes.push_account):
 | 
			
		||||
            host.update(self.make_account_ansible_vars(account))
 | 
			
		||||
            host['ansible_become'] = True
 | 
			
		||||
            host['ansible_become_user'] = 'root'
 | 
			
		||||
            host['ansible_become_password'] = account.secret
 | 
			
		||||
        else:
 | 
			
		||||
            host.update(self.make_account_ansible_vars(account))
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue