码迷,mamicode.com
首页 > 其他好文 > 详细

ansible模块user/group

时间:2020-09-15 21:14:22      阅读:40      评论:0      收藏:0      [点我收藏+]

标签:时间戳   日期   format   证书   end   开头   帮助   结合   字符   

user模块
user模块可以帮助我们管理远程主机上的用户,比如创建用户、修改用户、删除用户、为用户创建密钥对等操作。

此处我们介绍一些user模块的常用参数,你可以先对这些参数有一个大概了解,然后再看小示例。

name参数:必须参数,用于指定要操作的用户名称,可以使用别名user。

group参数:此参数用于指定用户所在的基本组

gourps参数:此参数用于指定用户所在的附加组,注意,如果说用户已经存在并且已经拥有多个附加组,那么如果想要继续添加新的附加组,需要结合append参数使用,否则在默认情况下,当再次使用groups参数设置附加组时,用户原来的附加组会被覆盖。

append参数:如果用户原本就存在多个附加组,那么当使用groups参数设置附加组时,当前设置会覆盖原来的附加组设置,如果不想覆盖原来的附加组设置,需要结合append参数,将append设置为yes,表示追加附加组到现有的附加组设置,append默认值为no。

shell参数:此参数用于指定用户的默认shell

uid参数:此参数用于指定用户的uid号

expires参数:此参数用于指定用户的过期时间,相当于设置/etc/shadow文件中的的第8列,比如,你想要设置用户的过期日期为2018年12月31日,那么你首先要获取到2018年12月31日的unix时间戳,使用命令"date -d 2018-12-31 +%s"获取到的时间戳为1546185600,所以,当设置expires=1546185600时,表示用户的过期时间为2018年12月31日0点0分,设置成功后,查看远程主机的/etc/shadow文件,对应用户的第八列的值将变成17895(表示1970年1月1日到2018年12月31日的天数,unix时间戳的值会自动转换为天数,我们不用手动的进行换算),目前此参数只支持在Linux和FreeBSD系统中使用。

comment参数:此参数用于指定用户的注释信息

state参数:此参数用于指定用户是否存在于远程主机中,可选值有present、absent,默认值为present,表示用户需要存在,当设置为absent时表示删除用户。

remove参数:当state的值设置为absent时,表示要删除远程主机中的用户,但是在删除用户时,不会删除用户的家目录等信息,这是因为remoove参数的默认值为no,如果设置为yes,在删除用户的同时,会删除用户的家目录,当state=absent并且remove=yes时,相当于执行"userdel --remove"命令

password参数:此参数用于指定用户的密码,但是这个密码不能是明文的密码,而是一个对明文密码"加密后"的字符串,相当于/etc/shadow文件中的密码字段,是一个对明文密码进行哈希后的字符串,你可以在python的命令提示符下输入如下命令,生成明文密码对应的加密字符串。

import crypt; crypt.crypt(‘666666‘)

输入上述命令后,即可得到明文密码666666对应的加密字符串。

update_password参数:此参数有两个值可选,always和on_create,当此参数的值设置为always时表示,如果password参数设置的值与用户当前的加密过的密码字符串不一致,则直接更新用户的密码,默认值即为always,但是当此参数设置为on_create时,如果password参数设置的值与用户当前的加密过的密码字符串不一致,则不会更新用户的密码字符串,保持之前的密码设定,如果是新创建的用户,即使此参数设置为on_create,也会将用户的密码设置为password参数对应的值。

generate_ssh_key参数:此参数默认值为no,如果设置为yes,表示为对应的用户生成ssh密钥对,默认在用户家目录的./ssh目录中生成名为id_rsa的私钥和名为id_rsa.pub的公钥,如果同名的密钥已经存在与对应的目录中,原同名密钥并不会被覆盖(不做任何操作),如果你对ssh密钥还不是特别了解,可以参考如下文章

http://www.zsythink.net/archives/2375

ssh_key_file参数:当generate_ssh_key参数的值为yes时,使用此参数自定义生成ssh私钥的路径和名称,对应公钥会在同路径下生成,公钥名以私钥名开头,以".pub"结尾。

ssh_key_comment参数:当generate_ssh_key参数的值为yes时,在创建证书时,使用此参数设置公钥中的注释信息,但是如果同名的密钥对已经存在,则并不会修改原来的注释信息,即不做任何操作,当不指定此参数时,默认的注释信息为"ansible-generated on 远程主机的主机名"

ssh_key_passphrase参数:当generate_ssh_key参数的值为yes时,在创建证书时,使用此参数设置私钥的密码,但是如果同名的密钥对已经存在,则并不会修改原来的密码,即不做任何操作

ssh_key_type参数:当generate_ssh_key参数的值为yes时,在创建证书时,使用此参数设置密钥对的类型,默认密钥类型为rsa,但是如果同名的密钥对已经存在,并不会对同名密钥做任何操作

示例

生成用户:ansible jack6-2 -m user -a ‘name=wang shell=/bin/bash uid=500 password="$6$qlG7vYW0ILk/sj.5$CHDB.pGAthC2SA.J/D/ECO2UP/rpGlvqc0CvkqOj1YYIAOkYd5qQ5oio94PWQIjXyPuwXP63uKwZbntzELOv8/"‘

注意此处的密码必须使用哈希密码,否则报错:
[19:08:38-root@jack7 ~]#python
Python 2.7.5 (default, Apr 2 2020, 13:16:51)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux2
Type "help", "copyright", "credits" or "license" for more information.

import cryptbr/>crypt.crypt(‘wh1991@lxj‘)
‘$6$EOaiD5XCFVRbwHy8$x6Sy8HOgrg4J03vPqQNABMmsdSCjIFI.kqkC1fAKJa57yJI40LHDwtC36Lg2rG8mSPMTZKXWgfIXESw.kk6E8/‘
exit()

更改用户密码:
ansible jack6-2 -m user -a ‘name=jack password="$6$0m7gx3OXEDC5fTI/$RnUcd5h9MBLWDsciC8.FS2iTJihyG7dAJBlrvAIs6rguzi3dC0C6P56o6/uHXrbwSf.Uz6q2n.sgyGZT7I8bD0" ‘
默认是更改密码的:update_password =always(覆盖密码) =on_create (不覆盖)

生成ssh的秘钥对,并把私钥名称定义为jack
ansible jack6-2 -m user -a ‘name=jack generate_ssh_key=yes ssh_key_file=jack‘

删除用户并删除家目录:
ansible jack6-2 -m user -a ‘name=jack state=absent remove=yes‘

group

group模块可以帮助我们管理远程主机上的组。

此处我们介绍一些group模块的常用参数,你可以先对这些参数有一个大概了解,然后再看小示例。

name参数:必须参数,用于指定要操作的组名称。

state参数:用于指定组的状态,两个值可选,present,absent,默认为present,设置为absent表示删除组。

gid参数:用于指定组的gid

创建组:
ansible jack6-2 -m group -a ‘name=wang gid=1500‘

给用户添加附属组:
ansible jack6-2 -m user -a ‘name=hao groups=wang append=yes‘

删除组:
ansible jack6-2 -m group -a ‘name=wang state=absent‘

删除用户及家目录:
ansible jack6-2 -m user -a ‘name=hao state=absent remove=yes‘

ansible模块user/group

标签:时间戳   日期   format   证书   end   开头   帮助   结合   字符   

原文地址:https://blog.51cto.com/13434656/2526951

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!