saltstack用户管理

使用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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 229,565评论 6 539
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 99,115评论 3 423
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 177,577评论 0 382
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 63,514评论 1 316
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 72,234评论 6 410
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 55,621评论 1 326
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 43,641评论 3 444
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 42,822评论 0 289
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 49,380评论 1 335
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 41,128评论 3 356
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 43,319评论 1 371
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 38,879评论 5 362
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 44,548评论 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 34,970评论 0 28
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 36,229评论 1 291
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 52,048评论 3 397
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 48,285评论 2 376

推荐阅读更多精彩内容