Neulich hatte ich die Idee, eine vom Display-Manager unabhängige Gastsitzung zu erstellen.
Meine Grundidee war, die Login-Shell in ein benutzerdefiniertes Programm zu ändern, das im laufenden Betrieb ein temporäres Home erstellt (z. B. /tmp/guest-XXXXXX
), und dieser Sitzung dieses Home zuzuweisen. Nachdem sich der Benutzer abgemeldet hat, wird dieses Verzeichnis wieder entfernt. Das Problem, auf das ich gestoßen bin, ist das folgende: Ich muss ein Home festlegen /etc/passwd
und kann die HOME-Umgebungsvariable problemlos überschreiben, aber Anwendungen scheinen immer noch das festgelegte Home passwd
anstelle der Umgebungsvariable zu verwenden, zumindest in einer grafischen Umgebung. Ich kann das Home nicht festlegen, passwd
da ich davon erst erfahre, wenn die Sitzung begonnen hat.
Die grundlegende Logik, die mir dabei herausgekommen ist, sieht folgendermaßen aus:
- Login-Shell gestartet
- temporäres Zuhause geschaffen
- HOME ist auf dieses temporäre Home eingestellt
- eine echte Shell wird gegabelt
- Nachdem die eigentliche Shell beendet wurde, wird das temporäre Home entfernt
Dies scheint zu funktionieren, wenn ich mich su
im Benutzermodus befinde, aber das Ausführen einer grafischen Sitzung bedeutet, dass die meisten/alle gestarteten Programme das in festgelegte Home-Menü verwenden passwd
.
Ist es möglich, ein Benutzer-Home im laufenden Betrieb bzw. während einer aktiven Grafiksitzung zu ändern? Habe ich in der Architektur der Funktionsweise der Grafiksitzungen etwas übersehen?