Fix: Robusteres Filtern von Benutzer-Home-Verzeichnissen
- In 'roles/tmux/tasks/main.yml' wurde der Task zur Erstellung der
'user_home_dirs'-Liste durch eine robustere Methode ersetzt.
Diese verwendet Jinja2-Filter (, , ),
um Benutzer anhand ihrer Shell, des Benutzernamens ('root' ausschließen),
der Definition des Home-Verzeichnisses sowie des Ausschlusses von
leeren oder nur aus '/' bestehenden Home-Verzeichnissen zu filtern.
- Die redundanten 'when'-Bedingungen im 'Tmux config block' wurden entfernt,
da die Filterung nun zentral bei der Erstellung der Liste erfolgt.
Dies sollte das Problem beheben, dass gültige Benutzer übersprungen werden
und gleichzeitig die Robustheit gegen ungültige Home-Verzeichnisse erhöhen.
This commit is contained in:
@@ -12,16 +12,17 @@
|
|||||||
database: passwd
|
database: passwd
|
||||||
register: all_users
|
register: all_users
|
||||||
|
|
||||||
- name: Create a list of home directories for bash and zsh users
|
- name: Create a list of home directories for bash, zsh and fish users
|
||||||
set_fact:
|
set_fact:
|
||||||
user_home_dirs: "{{ user_home_dirs | default([]) + [item.value[4]] }}"
|
user_home_dirs: >-
|
||||||
loop: "{{ all_users.ansible_facts.getent_passwd | dict2items }}"
|
{{ all_users.ansible_facts.getent_passwd.values()
|
||||||
when:
|
| selectattr(5, 'in', ['/bin/bash', '/bin/zsh', '/usr/bin/bash', '/usr/bin/fish'])
|
||||||
- item.value[5] in ['/bin/bash', '/bin/zsh', '/usr/bin/bash', '/usr/bin/zsh', '/usr/bin/fish']
|
| rejectattr(0, 'eq', 'root')
|
||||||
- item.value[0] != 'root'
|
| selectattr(4, 'defined')
|
||||||
- item.value[4] is defined
|
| rejectattr(4, 'eq', '')
|
||||||
- item.value[4] != '/'
|
| rejectattr(4, 'eq', '/')
|
||||||
- item.value[4] != ''
|
| map(attribute=4)
|
||||||
|
| list }}
|
||||||
|
|
||||||
- name: Display the list of collected home directories
|
- name: Display the list of collected home directories
|
||||||
ansible.builtin.debug:
|
ansible.builtin.debug:
|
||||||
@@ -32,7 +33,6 @@
|
|||||||
- name: Tmux config Play
|
- name: Tmux config Play
|
||||||
include_tasks: tmux_config.yml
|
include_tasks: tmux_config.yml
|
||||||
loop: "{{ user_home_dirs }}"
|
loop: "{{ user_home_dirs }}"
|
||||||
when: item | basename != 'root' and item != '/' and item != ''
|
|
||||||
|
|
||||||
# ========================================================================
|
# ========================================================================
|
||||||
# EXAMPLE: Here is how you can reuse the 'user_home_dirs' list
|
# EXAMPLE: Here is how you can reuse the 'user_home_dirs' list
|
||||||
|
|||||||
Reference in New Issue
Block a user