我使用这个任务在Linux上创建新用户
- name: Add user
ansible.builtin.user:
name: "{{ item.name }}"
uid: "{{ item.uid }}"
shell: /bin/bash
group: "{{ item.group }}"
groups: sshgroup
append: yes
with_items: "{{ users }}"
- name: Add .ssh directory
file:
path: "/home/{{ item.name }}/.ssh"
state: directory
mode: 0700
owner: "{{ item.name }}"
group: "{{ item.group }}"
with_items: "{{ users }}"
- name: Add key
lineinfile:
dest: "/home/{{ item.name }}/.ssh/authorized_keys"
state: present
create: yes
line: "{{ item.auth_key }}"
owner: "{{ item.name }}"
group: "{{ item.group }}"
mode: 0600
with_items: "{{ users }}"
大多数情况下,用户可以通过ssh成功登录。但是有一种情况,新创建的用户不能用他/她的私人ssh密钥登录。他们收到了密码请求。
Linux上的用户喜欢
$ ls -la /home/
# Can't login with ssh
drwxrwxr-x. 3 user1 user1 103 October 12 10:10 user1
# Can login with ssh
drwxr-xr-x. 7 user2 user2 4002 October 23 11:20 user2
drwx------. 3 user3 user3 80 October 21 12:00 user3
他们似乎有不同的权限。为什么会出现这种情况?如果更改user1
的权限,ansible怎么办?
是否存在剧本的替代部分或其他用户进行修改?无论使用ansible还是任何其他方法,用户通常都具有创建主目录的权限,请参见"drwx------."除非创建用户时文件夹已经存在,或者另有指定权限。如果你想确保它总是正确的,你总是可以使用一个额外的剧本,像下面的
- file:
path: /home/{{ item.name }}/
state: directory
mode: 0700
with_items: "{{ users }}"
据我所知,应该用来创建用户的模块是:user。您可以发出命令:ansible-doc user
或ansible-doc -s user
来获取有关语法的信息,以便在您的可见剧本中应用。下面我将提出一个剧本,即创建几个(在本例中是两个)用户,并在需要时修改/etc/sudoers。
p。您需要在剧本中提供散列密码才能登录到创建的帐户。
---
- name: create user
hosts: your_hosts
tasks:
- name: create users
user:
name: "{{ item.user }}"
password: "{{ item.password }}"
state: present
with_items:
- { user: BBB, password: here_hashed_password }
- { user: CCC, password: here_hashed_password }
- name: add sudo entry
lineinfile:
path: /etc/sudoers
line: "{{ item.line }}"
with_items:
- { line: 'BBB ALL=(ALL) NOPASSWD: ALL' }
- { line: 'CCC ALL=(ALL) NOPASSWD: ALL' }