zoukankan      html  css  js  c++  java
  • ansible模块-user

    一、概述
    user 模块可以帮助我们管理远程主机上的用户,比如创建用户、修改用户、删除用户、为用户创建密钥对等操作。
    二、心得
    password参数:此参数用于指定用户的密码。但是这个密码不能是明文的密码,而是一个对明文密码”加密后”的字符串,相当于 /etc/shadow 文件中的密码字段,是一个对明文密码进行哈希后的字符串,你可以在 python 的命令提示符下输入如下命令,生成明文密码对应的加密字符串。

    问题示例:

    首先将密码加密后复制这段加密后的字符串

    然后执行命令进行创建用户

    ansible 192.168.81.131 -m user -a "name=ansible password='$6$CgQ16RU8ITySpkh7$MzOzbrDT1.j2b.4rUnhgpG.Zqb3w9Ip.7eEKGU2HE6CiUiDAaQeTNvBK6JLw.rMCNomD0chcE4yVK9ChTkJN/0' state=present"

    命令执行完毕,返回创建成功,于是用ssh命令去登录,输入密码后发现认证失败!!!

    于是在目标主机上查看/etc/shadow文件,发现密码部分不完整:

     于是百思得其解,很有可能是密码的加密字符串中含有特殊字符导致的,于是将字符串中的“$”字符前加一个“”转义符

    ansible 192.168.81.131 -m user -a "name=ansible password='$6$CgQ16RU8ITySpkh7$MzOzbrDT1.j2b.4rUnhgpG.Zqb3w9Ip.7eEKGU2HE6CiUiDAaQeTNvBK6JLw.rMCNomD0chcE4yVK9ChTkJN/0' update_password=always"

    然后再cat一下/etc/shadow

     完美!

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

    三、使用raw模块进行批量修改用户密码

    raw模块 [类似于command模块、支持管道传递],如果密码中包含特殊字符,则无法使用raw模块

    ansible shenzhen -m raw -a "echo 'newpass' | passwd --stdin username"
  • 相关阅读:
    Silverlight Binding之ConverterParameter
    .Net 深克隆与浅克隆实践笔记
    oracle中的锁机制
    .Net生成GUID号
    微软经典面试题之一——16个硬币问题
    C# string.Format 与+性能比较
    c#实现最简快速排序,你绝对可以看懂
    hdu 1204 糖果大战
    hdu 1166 敌兵布阵
    nyoj 7 喷水装置一
  • 原文地址:https://www.cnblogs.com/caibao666/p/11911596.html
Copyright © 2011-2022 走看看