Erstellen Sie ein Gastkonto in Gnome 3.X unter Arch Linux

7

Ich möchte ein Gastkonto wie in Ubuntu mit folgenden Funktionen:

  1. Für die Anmeldung ist kein Passwort erforderlich
  2. /tmpJedes Mal wird ein neuer Basisordner ( wenn möglich) ohne Daten erstellt
  3. Benutzerdaten werden gelöscht, sobald er sich abmeldet
  4. Benutzer kann nicht verwenden sudo

Ich verwende Gnome 3.20 unter Arch Linux

HINWEIS: Bitte schließen Sie meine Frage nicht als Duplikat von Gastkonto erstellen mit eingeschränktem Zugriff auf Anwendungen, da diese Frage keine Antworten auf meinen 2. und 3. Punkt enthält

Edward Torvalds
quelle
Dies ist relevant. Vielleicht sogar ein Betrüger, wenn die Antwort für Sie funktioniert: Erstellen Sie ein Gastkonto mit eingeschränktem Zugriff auf Anwendungen .
Terdon
@terdon es sieht aus wie eine Umgehung und nicht genau wie Ubuntu
Edward Torvalds
Ich habe keine Ahnung, wie Ubuntu das macht. Wenn Sie "genau wie Ubuntu" benötigen, müssen Sie Ihre Frage bearbeiten und erklären, was das bedeutet. Die in der verknüpften Antwort angegebenen Links geben jedoch Aufschluss darüber, wie Sie die Autorität eines Benutzers einschränken können, und geben mit ziemlicher Sicherheit an, wie Ubuntu alles implementiert hat, was er hinter den Kulissen implementiert hat. Versuch es.
Terdon

Antworten:

9

Es stellt sich heraus, dass es mit GDM ganz einfach ist. Ich gehe davon aus, dass Sie GDM verwenden, da Sie auch Gnome verwenden. Erstellen Sie zunächst das guestBenutzerkonto mit einem leeren Kennwort:

sudo useradd -d /tmp/guest -p $(openssl passwd "") guest

Der openssl passwd "" gibt den Hash der leeren Zeichenfolge zurück, wodurch das Kennwort auf leer gesetzt wird.

Jetzt brauchen Sie nur noch diese beiden Skripte:

  • /etc/gdm/PostLogin/Default

    Dies wird ausgeführt, nachdem Sie sich angemeldet haben, und erstellt das /tmp/$guestuser( /tmp/gueststandardmäßig) Verzeichnis und kopiert die Standarddateien von /etc/skeldort. Um den Standardbenutzernamen für den Gastbenutzer zu ändern, setzen Sie guestuseram Anfang etwas anderes.

    #!/bin/sh
    
    guestuser="guest"
    
    ## Set up guest user session
    if [[ "$USER" = "$guestuser" ]]; then
        mkdir /tmp/"$guestuser"
        cp /etc/skel/.* /tmp/"$guestuser"
        chown -R "$guestuser":"$guestuser" /tmp/"$guestuser"
    fi
    exit 0
    
  • /etc/gdm/PostSession/Default

    Dies wird ausgeführt, nachdem Sie sich abgemeldet haben, und entfernt das /etc/$guestuserVerzeichnis und seinen gesamten Inhalt. Stellen Sie sicher, dass guestuserin beiden Skripten derselbe Wert festgelegt ist.

    #!/bin/sh
    
    guestuser="guest"
    
    ## Clear up the guest user session
    if [[ "$USER" = "$guestuser" ]]; then
        rm -rf /tmp/"$guestuser"
    fi
    
    exit 0
    

Schließlich machen Sie die beiden Skripte ausführbar:

sudo chmod 755 /etc/gdm/PostLogin/Default  /etc/gdm/PostSession/Default

Melden Sie sich jetzt einfach ab und Sie werden Ihren neuen guestBenutzer sehen. Sie können sich anmelden, indem Sie es auswählen und drücken, Enterwenn Sie zur Eingabe eines Kennworts aufgefordert werden. Der guestBenutzer kann nicht verwenden, sudoda dies ohnehin die Standardeinstellung für alle Benutzer ist. Nur Benutzer, die ausdrücklich in erwähnt werden /etc/sudoersoder Mitglieder von Gruppen sind, die ausdrücklich in erwähnt werden sudoers(wie wheeloder sudo, abhängig von Ihrer Distribution), können verwenden sudo.


Wenn Sie eine aktuelle Version von GDM verwenden, wird möglicherweise die Anmeldeschaltfläche deaktiviert, während das Kennwortfeld leer ist. Um dies zu umgehen, können Sie GDM anweisen, nicht nach dem Kennwort für bestimmte Gruppen zu fragen. Die Einschränkung besteht darin, dass dadurch auch das Sitzungsauswahlmenü für Mitglieder dieser Gruppe umgangen wird. Wenn Sie dies tun möchten, sollten Sie diese Zeile am Anfang von hinzufügen /etc/pam.d/gdm-password:

auth sufficient pam_succeed_if.so user ingroup guest
terdon
quelle
Warum müssen Sie chmoddiese Dateien? Das ist nicht nötig, da diese Skripte von root ausgeführt werden
Edward Torvalds
1
@edwardtorvalds so? Welchen Unterschied macht das? Root kann keine nicht ausführbaren Dateien ausführen. Und ja, Sie brauchen es, weil ich es versucht habe, ohne sie ausführbar zu machen, und es fehlgeschlagen ist. Es scheint, dass die Skripte direkt ( /path/to/script) und nicht als Argumente für ausgeführt werden sh. Dies ist sinnvoll, da die angegebenen Beispiele eine Shebang-Linie enthielten.
Terdon
Auf dem Anmeldebildschirm muss Ihre Lösung die Eingabetaste drücken, ohne etwas einzugeben, was in 3.16 funktioniert hat. In neueren Gnomen (wahrscheinlich ab 3.18) können Sie die Eingabetaste nicht drücken, ohne etwas einzugeben. Um dies zu umgehen, müssen Sie den Abschnitt mit dem Hash-Passwort /etc/shadowleer lassen.
Edward Torvalds
Da der /tmp/guest/Ordner beim Start nicht vorhanden ist, schlägt der Schattendienst von systemd jedes Mal
fehl
1
@MattSturgeon Ja, es scheint völlig vernünftig, ich habe nur gefragt, weil ich, da ich es nicht getestet habe, nicht wissen konnte, ob es funktioniert. Großartige Bearbeitung, danke!
Terdon
2

Sie können Abmeldeskripte verwenden . Dort können Sie den Home-Ordner für Ihr Gastkonto löschen und beim Abmelden einen neuen erstellen. Bei Bedarf können Sie dies sudoüber das Gastkonto über ermöglichen visudo. Hinzufügen yourguestacc ALL=(root) NOPASSWD: /path/to/script/recreating/the/home/folder. Weitere Informationen finden Sie im Arch-Wiki .

nox
quelle