saltstack用戶管理

使用Salt在多平臺(tái)進(jìn)行用戶管理將變得非常簡(jiǎn)單。 user模塊允許管理員管理(原文為present)賬戶各個(gè)方面和刪除(absent)賬戶。本文將講述帳號(hào)的添加等管理操作。

一、參數(shù)說明

user.present
user.present: 確保指定的賬戶名存在,并指定其對(duì)應(yīng)的屬性. 這些屬性包括如下內(nèi)容:

name: 指定需要管理的賬戶名.

uid: 指定uid, 如果不設(shè)置將配自動(dòng)分配下一個(gè)有效的uid.

gid: 指定默認(rèn)的組id(group id)

gid_from_name: 如果設(shè)置為True,默認(rèn)的組id將自動(dòng)設(shè)置為和本用戶同名的組id

groups: 分配給該用戶的組列表(a list of groups). 如果組在minion上不存在,則本state會(huì)報(bào)錯(cuò). 如果設(shè)置會(huì)空,將會(huì)刪除本用戶所屬的除了默認(rèn)組之外的其他組

optional_groups: 分配給用戶的組列表。 如果組在minion上不存在,則state會(huì)忽略它.

home: 關(guān)于用戶的家目錄(home directory).

password: 設(shè)置用戶hash之后的密碼.

enforce_password: 當(dāng)設(shè)置為False時(shí),如果設(shè)置的password與用戶原密碼不同,將保持原密碼不做更改.如果沒有設(shè)置password選項(xiàng),該選項(xiàng)將自動(dòng)忽略掉.

shell: 指定用戶的login shell。 默認(rèn)將設(shè)置為系統(tǒng)默認(rèn)shell。

unique: UID唯一,默認(rèn)為True.

system: 從FIRST_SYSTEM_UIDLAST_SYSTEM_UID間選擇一個(gè)隨機(jī)的UID.

用戶描述選項(xiàng)(GECOS)支持(當(dāng)前只支持Linux和FreeBSD系統(tǒng)):

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

roomnumber: 指定用戶的房間號(hào).

workphone: 指定用戶的工作電話號(hào)碼.

homephone: 指定用戶的家庭電話號(hào)碼.

user.absent
本部分為譯者依據(jù)官方手冊(cè)進(jìn)行的補(bǔ)充,原文中并沒有相關(guān)內(nèi)容
user.absent 用于刪除用戶.其有以下選項(xiàng):

name: 指定需要?jiǎng)h除的用戶名.

purge: 設(shè)置清除用戶的文件(家目錄)

force: 如果用戶當(dāng)前已登錄,則absent state會(huì)失敗. 設(shè)置force選項(xiàng)為True時(shí),就算用戶當(dāng)前處于登錄狀態(tài)也會(huì)刪除本用戶.

當(dāng)管理用戶時(shí),至少需要指定user.presentuser.absent。 其他選項(xiàng)是可選的,比如uid、gidhome等選項(xiàng)沒有指定是,將自動(dòng)使用下一個(gè)有效的或者系統(tǒng)默認(rèn)的.

二、示例
1、添加用戶:

修改用戶,與添加用戶類似,只需更改對(duì)應(yīng)參數(shù)值即可,這里不做贅述。

生成一個(gè)MD5密碼加密串

openssl passwd -1

$1$6Wit4zof$E4yDRIBJQXzwWnx0uVd1Z1

編輯usertest.sls文件

[root@server01 salt]# vi usertest.sls
user01: #### 可以是任意有意義的字符串,在沒有設(shè)置下邊name 關(guān)鍵字時(shí),默認(rèn)為用戶名
user.present:
- name: user01 ####默認(rèn)可以不設(shè)置,采用上邊的值為用戶名
- fullname: Christer Edwards ###默認(rèn)可以不設(shè)置
- password: ’$1$6Wit4zof$E4yDRIBJQXzwWnx0uVd1Z1‘ ###加密后的密碼
- shell: /bin/bash ###默認(rèn)可以不設(shè)置 ,默認(rèn)為/bin/bash
- home: /home/user01 ###默認(rèn)可以不設(shè)置,默認(rèn)為/home/用戶名
- uid: 500 ###默認(rèn)可以不設(shè)置,默認(rèn)為下一個(gè)可用的UID
- gid: 500 ####默認(rèn)可以不設(shè)置,默認(rèn)會(huì)創(chuàng)建同名的組
- groups: ##可以將用戶添加到多個(gè)用戶組
- user02
- user03

所以上邊的例子可以寫成這樣:效果是一樣的。

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

或者你只需要建立個(gè)用戶和同名的用戶組,那就直接這樣寫就可以了。

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

編輯top.sls文件

vi top.sls

base:
 '*':
  - usertest

運(yùn)行結(jié)果如下:

[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、批量添加用戶:

批量修改用戶,與批量添加用戶類似,只需更改對(duì)應(yīng)參數(shù)值即可,這里不做贅述。

[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 ##如果想將用戶加到同一組,添加這個(gè)參數(shù),否則可以不設(shè)置。每個(gè)用都默認(rèn)創(chuàng)建一個(gè)同名用戶組
{% endfor %}

運(yùn)行結(jié)果如下:

[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 #設(shè)置清除用戶的文件(家目錄)
- force: True #如果用戶當(dāng)前已登錄,則absent state會(huì)失敗. 設(shè)置force選項(xiàng)為True時(shí),就算用戶當(dāng)前處于登錄狀態(tài)也會(huì)刪除本用戶.
{% endfor %}

4、批量刪除用戶:

[root@server01 salt]# cat usertest.sls
{% set users = ['user04','user05'] %}
{% for user in users %}
{{ user }}:
user.absent:
- purge: True #設(shè)置清除用戶的文件(家目錄)
- force: True #如果用戶當(dāng)前已登錄,則absent state會(huì)失敗. 設(shè)置force選項(xiàng)為True時(shí),就算用戶當(dāng)前處于登錄狀態(tài)也會(huì)刪除本用戶.
{% endfor %}

5、增加用戶組

編輯 grouptest.sls文件

devgroup:
 group.present:
    - gid: 1000

執(zhí)行結(jié)果如下:

[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是無效的關(guān)鍵字,但是不加這個(gè)關(guān)鍵字卻執(zhí)行報(bào)錯(cuò),加了只是警告,但是可以刪除用戶組
              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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容