美文网首页
saltstack用户管理

saltstack用户管理

作者: 老夫刘某 | 来源:发表于2017-07-24 17:28 被阅读0次

    使用Salt在多平台进行用户管理将变得非常简单。 user模块允许管理员管理(原文为present)账户各个方面和删除(absent)账户。本文将讲述帐号的添加等管理操作。

    一、参数说明

    user.present
    user.present: 确保指定的账户名存在,并指定其对应的属性. 这些属性包括如下内容:

    name: 指定需要管理的账户名.

    uid: 指定uid, 如果不设置将配自动分配下一个有效的uid.

    gid: 指定默认的组id(group id)

    gid_from_name: 如果设置为True,默认的组id将自动设置为和本用户同名的组id

    groups: 分配给该用户的组列表(a list of groups). 如果组在minion上不存在,则本state会报错. 如果设置会空,将会删除本用户所属的除了默认组之外的其他组

    optional_groups: 分配给用户的组列表。 如果组在minion上不存在,则state会忽略它.

    home: 关于用户的家目录(home directory).

    password: 设置用户hash之后的密码.

    enforce_password: 当设置为False时,如果设置的password与用户原密码不同,将保持原密码不做更改.如果没有设置password选项,该选项将自动忽略掉.

    shell: 指定用户的login shell。 默认将设置为系统默认shell。

    unique: UID唯一,默认为True.

    system: 从FIRST_SYSTEM_UIDLAST_SYSTEM_UID间选择一个随机的UID.

    用户描述选项(GECOS)支持(当前只支持Linux和FreeBSD系统):

    fullname: 指定用户全名(full name).

    roomnumber: 指定用户的房间号.

    workphone: 指定用户的工作电话号码.

    homephone: 指定用户的家庭电话号码.

    user.absent
    本部分为译者依据官方手册进行的补充,原文中并没有相关内容
    user.absent 用于删除用户.其有以下选项:

    name: 指定需要删除的用户名.

    purge: 设置清除用户的文件(家目录)

    force: 如果用户当前已登录,则absent state会失败. 设置force选项为True时,就算用户当前处于登录状态也会删除本用户.

    当管理用户时,至少需要指定user.presentuser.absent。 其他选项是可选的,比如uidgidhome等选项没有指定是,将自动使用下一个有效的或者系统默认的.

    二、示例
    1、添加用户:

    修改用户,与添加用户类似,只需更改对应参数值即可,这里不做赘述。

    生成一个MD5密码加密串

    openssl passwd -1

    $1$6Wit4zof$E4yDRIBJQXzwWnx0uVd1Z1

    编辑usertest.sls文件

    [root@server01 salt]# vi usertest.sls
    user01: #### 可以是任意有意义的字符串,在没有设置下边name 关键字时,默认为用户名
    user.present:
    - name: user01 ####默认可以不设置,采用上边的值为用户名
    - fullname: Christer Edwards ###默认可以不设置
    - password: ’$1$6Wit4zof$E4yDRIBJQXzwWnx0uVd1Z1‘ ###加密后的密码
    - shell: /bin/bash ###默认可以不设置 ,默认为/bin/bash
    - home: /home/user01 ###默认可以不设置,默认为/home/用户名
    - uid: 500 ###默认可以不设置,默认为下一个可用的UID
    - gid: 500 ####默认可以不设置,默认会创建同名的组
    - groups: ##可以将用户添加到多个用户组
    - user02
    - user03

    所以上边的例子可以写成这样:效果是一样的。

    user01:     
      user.present:
        - password: ’$1$6Wit4zof$E4yDRIBJQXzwWnx0uVd1Z1‘ 
        - groups:  
          - user02    
          - user03
    

    或者你只需要建立个用户和同名的用户组,那就直接这样写就可以了。

    user01:     
      user.present:
        - password: '$1$6Wit4zof$E4yDRIBJQXzwWnx0uVd1Z1'
    

    编辑top.sls文件

    vi top.sls

    base:
     '*':
      - usertest
    

    运行结果如下:

    [root@server01 salt]# salt 'server13' state.highstate

    server13:
    ----------
              ID: user01
        Function: user.present
          Result: True
         Comment: New user user01 created
         Started: 11:52:58.659648
        Duration: 120.219 ms
         Changes:   
                  ----------
                  fullname:
                      user01
                  gid:
                      600
                  groups:
                      - user01
                  home:
                      /home/user01
                  homephone:
                  name:
                      user01
                  passwd:
                      x
                  password:
                      $1$6Wit4zof$E4yDRIBJQXzwWnx0uVd1Z1
                  roomnumber:
                  shell:
                      /bin/bash
                  uid:
                      600
                  workphone:
    
    Summary
    ------------
    Succeeded: 1 (changed=1)
    Failed:    0
    ------------
    Total states run:     1
    

    2、批量添加用户:

    批量修改用户,与批量添加用户类似,只需更改对应参数值即可,这里不做赘述。

    [root@server01 salt]# cat usertest.sls
    {% set users = ['user07','user08','user09'] %}
    {% for user in users %}
    {{ user }}:
    user.present:
    - password: '$1$YIlsYoVs$B1Vczyf/KI6qlyP9EN5GL/'
    - gid: 501 ##如果想将用户加到同一组,添加这个参数,否则可以不设置。每个用都默认创建一个同名用户组
    {% endfor %}
    

    运行结果如下:

    [root@server01 salt]# salt 'server13' state.highstate

    server13:
    ----------
              ID: user07
        Function: user.present
          Result: True
         Comment: New user user07 created
         Started: 14:20:06.900449
        Duration: 87.247 ms
         Changes:   
                  ----------
                  fullname:
                  gid:
                      606
                  groups:
                      - user07
                  home:
                      /home/user07
                  homephone:
                  name:
                      user07
                  passwd:
                      x
                  password:
                      $1$YIlsYoVs$B1Vczyf/KI6qlyP9EN5GL/
                  roomnumber:
                  shell:
                      /bin/bash
                  uid:
                      606
                  workphone:
    ----------
              ID: user08
        Function: user.present
          Result: True
         Comment: New user user08 created
         Started: 14:20:06.987870
        Duration: 63.892 ms
         Changes:   
                  ----------
                  fullname:
                  gid:
                      607
                  groups:
                      - user08
                  home:
                      /home/user08
                  homephone:
                  name:
                      user08
                  passwd:
                      x
                  password:
                      $1$YIlsYoVs$B1Vczyf/KI6qlyP9EN5GL/
                  roomnumber:
                  shell:
                      /bin/bash
                  uid:
                      607
                  workphone:
    ----------
              ID: user09
        Function: user.present
          Result: True
         Comment: New user user09 created
         Started: 14:20:07.051936
        Duration: 66.787 ms
         Changes:   
                  ----------
                  fullname:
                  gid:
                      608
                  groups:
                      - user09
                  home:
                      /home/user09
                  homephone:
                  name:
                      user09
                  passwd:
                      x
                  password:
                      $1$YIlsYoVs$B1Vczyf/KI6qlyP9EN5GL/
                  roomnumber:
                  shell:
                      /bin/bash
                  uid:
                      608
                  workphone:
    
    Summary
    ------------
    Succeeded: 3 (changed=3)
    Failed:    0
    ------------
    Total states run:     3
    

    3、删除用户:

    [root@server01 salt]# cat usertest.sls
    user01
    user.absent:
    - purge: True #设置清除用户的文件(家目录)
    - force: True #如果用户当前已登录,则absent state会失败. 设置force选项为True时,就算用户当前处于登录状态也会删除本用户.
    {% endfor %}
    

    4、批量删除用户:

    [root@server01 salt]# cat usertest.sls
    {% set users = ['user04','user05'] %}
    {% for user in users %}
    {{ user }}:
    user.absent:
    - purge: True #设置清除用户的文件(家目录)
    - force: True #如果用户当前已登录,则absent state会失败. 设置force选项为True时,就算用户当前处于登录状态也会删除本用户.
    {% endfor %}
    

    5、增加用户组

    编辑 grouptest.sls文件

    devgroup:
     group.present:
        - gid: 1000
    

    执行结果如下:

    [root@server01 salt]# salt 'server13' state.highstate
    server13:
    ----------
    ID: devgroup
    Function: group.present
    Result: True
    Comment: New group devgroup created
    Started: 16:01:32.638773
    Duration: 87.384 ms
    Changes:
    ----------
    gid:
    1000
    members:
    name:
    devgroup
    passwd:
    x
    
    Summary
    ------------
    Succeeded: 1 (changed=1)
    Failed: 0
    ------------
    Total states run: 1
    

    6、删除用户组:
    查看 grouptest.sls

    devgroup: 
     group.absent:
       - gid: 1000
    
    [root@server01 salt]# salt 'server13' state.highstate
    server13:
    ----------
              ID: devgroup
        Function: group.absent
          Result: True
         Comment: Removed group devgroup
         Started: 16:28:56.960932
        Duration: 45.879 ms
         Changes:   
                  ----------
                  devgroup:
        Warnings: 'gid' is an invalid keyword argument for 'group.absent'. If you   ###这提示gid是无效的关键字,但是不加这个关键字却执行报错,加了只是警告,但是可以删除用户组
                  were trying to pass additional data to be used in a template          
                  context, please populate 'context' with 'key: value' pairs. Your
                  approach will work until Salt Carbon is out. Please update your
                  state files.
    
    Summary
    ------------
    Succeeded: 1 (changed=1)
    Failed:    0
    Warnings:  1
    ------------
    Total states run:     1
    

    相关文章

      网友评论

          本文标题:saltstack用户管理

          本文链接:https://www.haomeiwen.com/subject/ubgbkxtx.html