Ich versuche chroot für sftp-Benutzer einzurichten, so dass sie Benutzer-/Gruppennamen unter ls -l
gemäß this article sehen können. Zu diesem Zweck muss ich Ausgabe getent
Befehl erhalten und es in /chroots/{{ user.username }}/etc/passwd
Akte legen.Ansible: Parsing/Verkettung der Ausgabe des Getent-Moduls
Ich versuche ansible verwenden Sie diesen Befehl getent passwd sftpuser > /chroots/sftpuser/etc/passwd
zu ersetzen, wie folgt:
- name: get {{ user.username }} user info
getent:
database: passwd
key: "{{ user.username }}"
- debug:
var: getent_passwd
- name: create /chroots/{{ user.username }}/etc/passwd file
lineinfile:
path: /chroots/{{ user.username }}/etc/passwd
line: "{{ getent_passwd | from_json }}"
state: present
create: yes
owner: root
group: root
mode: '0644'
Die 'getent_passwd' sieht wie folgt aus:
ok: [cf1] => {
"getent_passwd": {
"testuser1": [
"x",
"1001",
"1002",
"",
"/home/testuser1",
"/usr/sbin/nologin"
]
}
}
Aber ich bekomme diese Fehlermeldung: FAILED! => {"failed": true, "msg": "Unexpected templating type error occurred on ({{ getent_passwd | from_json }}): expected string or buffer"}
- Was ist der richtige Weg, um diese Werte von
getent_passwd
zu erhalten in eine flache Saite mit ":" verbunden? - Ist es sicher, Genent Modul mit
key: "root"
auf diese Weise stattecho "root:x:0:0:not really root:::" >> /chroots/sftpuser/etc/passwd
zu verwenden? - kann man
getent passwd user1 user2
laufen lassen - ist es möglich, zwei Schlüssel zum Ansible's getent Modul irgendwie zu liefern?