作者主页:点击!
Ansible专栏:点击!
创作时间:2024年5月14日14点12分
在Ansible中,user
模块主要用于管理系统用户账户。它可以创建、修改、删除用户,并管理用户的属性,比如密码、组、家目录等。这个模块是非常有用的,尤其是在配置多个系统时,可以确保所有系统上的用户账户配置都是一致的。
user模块的作用
主要作用包括:
创建用户:
- 自动创建用户,并设置用户的各种属性,如UID、家目录、登录Shell等。
- 适用于新部署的系统或添加新用户到已存在的系统。
修改用户:
- 修改现有用户的属性,如更改用户的密码、主组、附加组、家目录等。
- 用于更新用户配置或确保用户设置符合最新的安全政策。
删除用户:
- 删除系统中的用户账户,可选是否同时删除用户的家目录及其邮件目录。
- 常用于清理不再需要的用户账户。
用户状态管理:
- 确保用户在系统中的存在或不存在状态,有助于保持环境的一致性和预期的配置状态。
Auser模块的应用场景
应用场景
- 配置管理:在多个环境中确保所有系统的用户配置一致。
- 安全合规:按照安全政策自动配置用户属性,如密码策略和访问控制。
- 自动化部署:在自动部署过程中创建和配置所需的用户账户。
- 系统维护:定期更新或删除用户账户,确保系统清洁和安全。
主要参数
参数名 | 描述 | 默认值 |
---|---|---|
name | 指定用户的名字 | 无 |
state | 确定用户的状态。可选值: present , absent | 无 |
password | 用户的密码(加密后的字符串) | 无 |
uid | 用户的UID | 无 |
gid | 用户的主组ID | 无 |
groups | 用户所属的其他组 | 无 |
home | 用户的家目录 | 无 |
shell | 用户的默认shell | 无 |
system | 如果设置为yes ,则创建一个系统账户 | no |
createhome | 是否创建家目录,默认为yes | yes |
remove | 在删除用户时,是否同时删除家目录和邮件目录 | no |
示例
创建一个新用户:
- name: Create a new useruser:name: johnstate: presentgroups: "wheel,developers"createhome: yesshell: /bin/bash
修改用户属性:
- name: Modify a useruser:name: johnshell: /bin/zshgroups: "wheel,developers,sudo"append: yes # 添加到现有组,而不是替换现有组
删除用户:
- name: Remove a useruser:name: johnstate: absentremove: yes # 同时删除用户的家目录和邮件目录
通过使用这些参数和选项,你可以通过Ansible自动管理系统的用户配置,确保在各个环境之间的一致性和安全性。
实验要求
通过一台ansible服务器来给两服务器操作(调用user模块实现)
1.增加主机组
通过以下配置就是创建一个webServers组 并且加入两个主机 再给组赋予变量 用户名和密码 这样组下的所有主机都可以访问 更加的便捷
2.创建用户
[root@ansible ~]# ansible webServers -m user -a 'name=ok state=present'
webServers
: 指定主机组的名称。在这个示例中,它可能代表一个或多个Web服务器。-m user
: 指定使用user
模块,该模块用于管理用户账户。-a 'name=ok state=present'
: 模块参数。name=ok
指定用户名称为ok
,state=present
确保用户存在
客户端查看
112服务器,ok用户创建成功
113服务器,ok用户创建成功
明显上面都已经创建成功
3.生成密码
通过openssl给5201314生成密文密码
接下来我们使用密文密码来给用户添加密码(因为/etc/passwd中存储的密码都是密文的)
[root@ansible ~]# echo '5201314' | openssl passwd -1 -stdin
$1$lNgUPHGc$K9.m7Fva0MmsAPEeP3CPz0
运行一个命令以在 Linux 上生成 openssl
哈希密码。您使用的命令使用 MD5 函数将字符串“5201314”转换为哈希密码。
传递密码
[root@ansible ~]# ansible webServers -m user -a 'name=ok password="$1$lNgUPHGc$K9.m7Fva0MmsAPEeP3CPz0"'
name=ok
:定义将要创建或修改的用户的名称。password="$1$lNgUPHGc$K9.m7Fva0MmsAPEeP3CPz0"
:设置用户的密码。该值是预先生成的密码哈希,在本例中,它似乎是用于身份验证的 MD5 哈希。
创建成功
调用密码
输入新的用户名和密码登录
这边登录成功查看目录 在家目录下的ok
修改用户shell
[root@ansible ~]# ansible webServers -m user -a 'name=ok shell=/sbin/nologin append=yes'
shell=/sbin/nologin
:将用户 shell 设置为/sbin/nologin
,有效阻止用户以交互方式登录系统。这通常用于不应直接访问 shell 的服务帐户或系统帐户。
这时候我们修改了他的登录shell
这个用户就没办法正常的登录进去了
4.删除用户
[root@ansible ~]# ansible webServers -m user -a 'name=ok state=absent'
客户端查看