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:
2026-02-03 12:26:02 +01:00
parent 0a48fec2bf
commit d629982afb

View File

@@ -12,16 +12,17 @@
database: passwd
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:
user_home_dirs: "{{ user_home_dirs | default([]) + [item.value[4]] }}"
loop: "{{ all_users.ansible_facts.getent_passwd | dict2items }}"
when:
- item.value[5] in ['/bin/bash', '/bin/zsh', '/usr/bin/bash', '/usr/bin/zsh', '/usr/bin/fish']
- item.value[0] != 'root'
- item.value[4] is defined
- item.value[4] != '/'
- item.value[4] != ''
user_home_dirs: >-
{{ all_users.ansible_facts.getent_passwd.values()
| selectattr(5, 'in', ['/bin/bash', '/bin/zsh', '/usr/bin/bash', '/usr/bin/fish'])
| rejectattr(0, 'eq', 'root')
| selectattr(4, 'defined')
| rejectattr(4, 'eq', '')
| rejectattr(4, 'eq', '/')
| map(attribute=4)
| list }}
- name: Display the list of collected home directories
ansible.builtin.debug:
@@ -32,7 +33,6 @@
- name: Tmux config Play
include_tasks: tmux_config.yml
loop: "{{ user_home_dirs }}"
when: item | basename != 'root' and item != '/' and item != ''
# ========================================================================
# EXAMPLE: Here is how you can reuse the 'user_home_dirs' list