this article에 따라 ls -l
의 사용자/그룹 이름을 볼 수 있도록 sftp 사용자를 위해 chroot를 설정하려고합니다. 이 목적을 위해서 나는 getent
명령의 출력을 얻어서 /chroots/{{ user.username }}/etc/passwd
파일에 넣어야한다. 다음과 같이가능 : getent 모듈의 구문 분석/연결 출력
나는이 명령 getent passwd sftpuser > /chroots/sftpuser/etc/passwd
을 대체 할 Ansible를 사용하려고 :
- 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'
다음과 같이 'getent_passwd은'외모 :
ok: [cf1] => {
"getent_passwd": {
"testuser1": [
"x",
"1001",
"1002",
"",
"/home/testuser1",
"/usr/sbin/nologin"
]
}
}
을하지만이 오류를 얻을 : FAILED! => {"failed": true, "msg": "Unexpected templating type error occurred on ({{ getent_passwd | from_json }}): expected string or buffer"}
-
을
getent_passwd
에 의해 제공된 값을 얻는 적절한 방법은 무엇입니까? ":"로 결합 된 하나의 편평한 문자열로?echo "root:x:0:0:not really root:::" >> /chroots/sftpuser/etc/passwd
대신key: "root"
이있는 젠털 모듈을 사용하는 것이 안전합니까?- 하나를 실행할 수 있습니다
getent passwd user1 user2
- 어떻게 든 2 개의 키를 무언가의 getent 모듈에 제공 할 수 있습니까?join
filter와 Jinja2 템플릿을 사용하여 예를 들어