user
模块主要用于管理系统用户账户。它可以创建、修改、删除用户,并管理用户的属性,比如密码、组、家目录等。这个模块是非常有用的,尤其是在配置多个系统时,可以确保所有系统上的用户账户配置都是一致的。user模块的作用
主要作用包括:
user模块的应用场景
应用场景
参数名 | 描述 | 默认值 |
---|---|---|
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 user
user:
name: john
state: present
groups: "wheel,developers"
createhome: yes
shell: /bin/bash
修改用户属性:
- name: Modify a user
user:
name: john
shell: /bin/zsh
groups: "wheel,developers,sudo"
append: yes # 添加到现有组,而不是替换现有组
删除用户:
- name: Remove a user
user:
name: john
state: absent
remove: yes # 同时删除用户的家目录和邮件目录
通过使用这些参数和选项,你可以通过Ansible自动管理系统的用户配置,确保在各个环境之间的一致性和安全性。
通过一台ansible服务器来给两服务器操作(调用user模块实现)
通过以下配置就是创建一个webServers组 并且加入两个主机 再给组赋予变量 用户名和密码 这样组下的所有主机都可以访问 更加的便捷
[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用户创建成功
明显上面都已经创建成功
通过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
:定义将要创建或修改的用户的名称。创建成功
输入新的用户名和密码登录
这边登录成功查看目录 在家目录下的ok
[root@ansible ~]# ansible webServers -m user -a 'name=ok shell=/sbin/nologin append=yes'
shell=/sbin/nologin
:将用户 shell 设置为/sbin/nologin
,有效阻止用户以交互方式登录系统。这通常用于不应直接访问 shell 的服务帐户或系统帐户。
这时候我们修改了他的登录shell
这个用户就没办法正常的登录进去了
[root@ansible ~]# ansible webServers -m user -a 'name=ok state=absent'
客户端查看