首页 > 解决方案 > SaltStack 禁用本地 Windows 管理员(如果已启用)

问题描述

如果启用了内置的 Windows 本地管理员帐户,我想禁用它。

由于salt.state.user.present不支持禁用帐户,我正在使用salt.modules.win_useradd.update。但是,即使该帐户已被禁用,它也会禁用该帐户。

我不能使用unless或者onlyif因为它们只使用从 shell 命令解析的结果。

有没有办法使用salt.module.win_useradd.info返回数据“更改”字典中的布尔值作为要求[user.info][account_disabled]

我想做类似以下的事情:

builtin_administrator:
  module.run:
    - user.info:
      - name: Administrator

disable_builtin_administrator:
  module.run:
    - user.update:
      - name: Administrator
      - account_disabled: true
    - require:
      - module: builtin_administrator
    - require:
      - module: builtin_administrator['changes']['user.info']['account_disabled']['false']

您可以在输出中看到来自win_useradd.info的结果数据更改字典:

local:
----------
          ID: builtin_administrator
    Function: module.run
      Result: True
     Comment: user.info: Built-in account for administering the computer/domain
     Started: 15:59:56.440000
    Duration: 15.0 ms
     Changes:
              ----------
              user.info:
                  ----------
                  account_disabled:
                      True
                  account_locked:
                      False
                  active:
                      False
                  comment:
                      Built-in account for administering the computer/domain
                  description:
                      Built-in account for administering the computer/domain
                  disallow_change_password:
                      False
                  expiration_date:
                      2106-02-07 01:28:15
                  expired:
                      False
                  failed_logon_attempts:
                      0L
                  fullname:
                  gid:
                  groups:
                      - Administrators
                  home:
                      None
                  homedrive:
                  last_logon:
                      Never
                  logonscript:
                  name:
                      Administrator
                  passwd:
                      None
                  password_changed:
                      2019-10-09 09:22:00
                  password_never_expires:
                      True
                  profile:
                      None
                  successful_logon_attempts:
                      0L
                  uid:
                      S-1-5-21-3258603230-662395079-3947342588-500
----------
          ID: disable_builtin_administrator
    Function: module.run
      Result: False
     Comment: The following requisites were not found:
                                 require:
                                     module: builtin_administrator['changes']['user.info']['account_disabled']['false']
     Started: 15:59:56.455000
    Duration: 0.0 ms
     Changes:

Summary for local
------------
Succeeded: 1 (changed=1)
Failed:    1
------------
Total states run:     2
Total run time:  15.000 ms

我正在使用 Windows 10 1903 masterless salt-minion 2019.2.1 (Fluorine) 进行测试,我在 minion配置文件中use_supersededmodule.run设置。

提前致谢!

标签: salt-stack

解决方案


我解决了这个问题:

localuser.disable.administrator:
  cmd.run:
    - name: "Get-LocalUser Administrator | Disable-LocalUser"
    - shell: powershell
    - onlyif: powershell -command "if ((Get-LocalUser | Where-Object {($_.Name -eq 'Administrator') -and ($_.Enabled -eq $true)}) -eq $null) {exit 1}"

推荐阅读