--- # Die Migrationen laufen bereits automatisch beim App-Start (app/db.py:init_db). # Diese Rolle stellt lediglich sicher, dass Verzeichnis/Rechte VOR dem ersten # Start korrekt sind und legt optional den initialen Admin-User an. - name: Datenverzeichnis-Rechte sicherstellen # Befund B6 (Umsetzungsauftrag_Sonnet5.md Teil A.3): guacd (Rolle "guacd") # laeuft als eigener Systemuser "guacd", nicht als "{{ jumphost_app_user }}", # braucht aber Zugriff auf {{ jumphost_data_dir }}/rdp-drives fuer die # RDP-Laufwerksumleitung. Mit reinem 0700 kommt guacd nicht einmal an # diesem Verzeichnis VORBEI (Traversal-Rechte fehlen), unabhaengig vom # systemd-ReadWritePaths-Hardening der guacd-Unit -- jeder Host mit # file_transfer_enabled scheitert dann mit EACCES. 0710 gibt der Gruppe # ausschliesslich das Traversal-Bit (kein Lesen/Auflisten von recordings/ # oder der DB-Datei) -- die guacd-Rolle nimmt den guacd-User dafuer in # diese Gruppe auf. rdp-drives selbst bleibt zusaetzlich mit eigenen, # engeren Rechten geschuetzt (guacd:guacd 0750, siehe Rolle "guacd"). ansible.builtin.file: path: "{{ jumphost_data_dir }}" state: directory owner: "{{ jumphost_app_user }}" group: "{{ jumphost_app_group }}" mode: "0710" - name: Pruefen, ob bereits eine DB existiert ansible.builtin.stat: path: "{{ jumphost_data_dir }}/jumphost.db" register: _db_stat - name: Hinweis fuer manuellen Erstadmin-Anlegeschritt ausgeben ansible.builtin.debug: msg: > Keine bestehende Datenbank gefunden. Nach dem ersten Start des Dienstes (Rolle jumphost_app) einmalig ausfuehren: {{ jumphost_venv }}/bin/python {{ jumphost_home }}/scripts/create_admin.py --username admin when: not _db_stat.stat.exists