Diese Frage bezieht sich aufeine andere, allgemeinere Frageüber Gastkonten. Dieses ist sehr spezifisch.
Setup: Ich habe viele ältere Dell Latitude E6410s und einige neuere Dell Latitude 5450, die ich in einem Klassenzimmer mit 16.04 verwende. Viele Studenten verwenden diese Maschinen für eine Vielzahl von Zwecken, darunter Datenanalyse und Datenerfassung über angeschlossene USB-Geräte.
Gastkonten sind gut geeignet, um die Rechner zwischen den Anmeldungen zu löschen. Die zusätzliche Funktion der Gastkonten besteht darin, dass sich die Rechner beim Einschalten und „Vergessen“ automatisch beim Gastkonto anmelden und ein Browserfenster öffnen. Das Problem besteht darin, dass die Gastkonten keine Berechtigungen für den Zugriff auf die USB-Anschlüsse haben.
Eine einfache Lösung wäre, das neue Gastkonto (z. B. guest-abf2) zur Dialout- und Plugdev-Gruppe hinzuzufügen, damit die Studenten angeschlossene Geräte und USB-Sticks verwenden können. So etwas wie:
moduser -a -G plugdev,dialout $USER
in einem Skript früh genug im Anmeldevorgang, damit es funktioniert.
Folgendes habe ich bisher versucht:
- Platzieren Sie diesen Befehl in einem der beidendokumentierte Hooks:
auto.sh
undprefs.sh
im/etc/guest-session
Verzeichnis. Keines von beiden funktioniert.prefs.sh
wird im Benutzerkontext ausgeführt und obwohlauto.sh
es im Rootkontext ausgeführt werden soll, wird es zu spät ausgeführt, um das neu erstellte Gastkonto zu den beiden Gruppen hinzuzufügen - Ändern der verfügbaren Skripte, die Lightdm ausführt (Ja, ich weiß, das ist nicht gut, aber ich war schon verzweifelt) und trotzdem funktioniert es nicht. Ich muss den Moduser-Befehl direkt nach der Kontoerstellung, aber vor der eigentlichen Anmeldung ausführen.
- Entsprechendalte Dokumentation (11 oder so)Es gibt einen Hook namens,
setup.sh
den ich ausprobiert habe, aber ich bin nicht sicher, ob dieser Hook noch funktioniert. - Ich habe versucht, ein Udev-Skript zu schreiben, aber das scheint furchtbar mühsam zu sein, und die Dokumentation scheint darauf ausgerichtet zu sein, USB-Sticks zu mounten und keinen Zugriff auf USB-Geräte zuzulassen. Ich könnte mich hier irren.
- Irgendwo bin ich über eine Dokumentation gestolpert, in der es einen ähnlichen Mechanismus wie ein Skript gibt, um neue Benutzer automatisch zu bestimmten Gruppen hinzuzufügen, aber ich kann ihn nicht finden. Das könnte in diesem Fall funktionieren oder auch nicht, aber ich werde es versuchen.
Antwort1
Die Gastkonten werden durch das Shell-Skript erstellt /usr/sbin/guest-account
.
Am Ende der Funktion add_account
wird aufgerufenBenutzer hinzufügenum den Benutzer zu erstellen. Wenn Sie die -G plugdev,dialout
Option hier hinzufügen, sollte das funktionieren.
Verwendendpkg-umleitenum zu vermeiden, dass ein aktualisiertes Paket Ihr geändertes Skript überschreibt.
Antwort2
Verwendenusermod
, nicht ' moduser
'.
... also funktioniert das Verhalten des Startskripts prefs.sh jetzt wie angekündigt. Durch Erstellen einer Datei namens prefs.sh in /etc/guest-session mit der folgenden Zeile:
moduser $USER -a -G plugdev,dialout
Dieser Befehl führt dazu, dass die Gastsitzung abstürzt und nicht geladen wird, wenn Sie ihn in einschließen prefs.sh
. „moduser“ ist kein gültiger Befehl. Verwenden Sie stattdessen diese Zeile:
usermod -a -G plugdev,dialout $USER
Antwort3
auto.sh
wurde nie in einem Root-Kontext ausgeführt. prefs.sh
Dies geschah bis Ubuntu 15.10, als es von als Quelle verwendet wurde /usr/sbin/guest-account
, aber der Code wurde überarbeitet und in 16.04 prefs.sh
wird es von als Quelle verwendet /usr/share/lightdm/guest-session/setup.sh
, was nicht als Root ausgeführt wird.
Ich weiß nicht, ob diese Verhaltensänderung beabsichtigt ist. Wenn nicht, gibt es möglicherweise einen Grund, eine Änderung vorzuschlagen.
Ich bin mir nicht sicher, was Sie meinen, wenn Sie sagen, dass eine Gastsitzung nicht auf die USB-Anschlüsse zugreifen kann. Ich weiß, dass Sie zumindest USB-Sticks verwenden können. Möglicherweise gibt es andere Geräte, deren Verwendung über AppArmor verhindert wird.
Bearbeiten:
Ich reichte einein Fehlerbericht. Wenn Sie die Schaltfläche akzeptieren, können Sie prefs.sh
den Gast wie zuvor der/den Gruppe(n) zuweisen.
Was USB-Sticks betrifft, habe ich einige Tests durchgeführt und festgestellt, dass die Formatierung des Sticks eine Rolle spielt. Mit einem als ext4 formatierten Stick konnte ich weder lesen noch schreiben, aber mit der Formatierung als fat16 funktioniert es einwandfrei.
Antwort4
Ich weiß nicht genau, wann es passiert ist, aber lightdm wurde aktualisiert, so dass das Verhalten des Startskriptsprefs.shfunktioniert jetzt wie angekündigt. Durch das Erstellen einer Datei namensprefs.shIn/etc/Gastsitzungmit der folgenden Zeile:
moduser $USER -a -G plugdev,dialout
Ich habe genau das erreicht, was ich brauchte, um Schülern den Zugriff auf neue USB-Geräte im Gastkonto zu ermöglichen.