Cette question est liée à ne autre question, plus générale sur les comptes d'invités. Celui-ci est très spécifique.
Configuration: J'ai beaucoup de Dell Latitude E6410 plus anciens et certains Dell Latitude 5450 plus récents que j'utilise dans une salle de classe fonctionnant sous 16.04. De nombreux étudiants utilisent ces machines à diverses fins, parmi lesquelles l'analyse et l'acquisition de données via des périphériques USB connectés.
Les comptes d’invités nous servent bien à nettoyer les machines entre les connexions. La fonctionnalité supplémentaire des comptes d'invité est que, après avoir allumé les machines et les avoir "oubliées", la machine se connecte automatiquement au compte d'invité et lance une fenêtre de navigateur. Le problème est que les comptes d’invités n’ont aucun privilège pour accéder aux ports USB.
Une solution simple consisterait à ajouter le nouveau compte invité (par exemple, guest-abf2) au groupe dialout et plugdev afin que les étudiants puissent utiliser les périphériques et les clés USB connectés. Quelque chose comme:
moduser -a -G plugdev,dialout $USER
dans un script suffisamment tôt dans le processus de connexion pour fonctionner.
C'est ce que j'ai essayé jusqu'à présent:
auto.sh
et prefs.sh
dans le répertoire /etc/guest-session
. Ni fonctionne. prefs.sh
est exécuté dans le contexte utilisateur et bien que auto.sh
soit censé s'exécuter dans un contexte racine, il est exécuté trop tard pour ajouter le compte invité nouvellement créé aux deux groupes.setup.sh
que j'ai essayé mais je ne suis pas sûr que ce hook fonctionne plus.Je ne sais pas exactement quand c'est arrivé, mais lightdm a été mis à jour et le comportement du script de démarrage prefs.sh fonctionne désormais comme annoncé. En créant un fichier appelé prefs.sh dans /etc/guest-session avec la ligne suivante:
moduser $USER -a -G plugdev,dialout
J'ai obtenu exactement ce dont j'avais besoin pour permettre aux étudiants d'accéder à de nouveaux périphériques USB dans le compte Invité.
Les comptes d'invité sont créés par le script shell /usr/sbin/guest-account
.
À la fin de la fonction add_account
, il appelle seradd pour créer l'utilisateur. Si vous ajoutez l'option -G plugdev,dialout
ici, cela devrait faire l'affaire.
Utilisez dpkg-divert pour éviter qu’un paquet mis à jour écrase votre script modifié.
Utilisez usermod
, pas 'moduser
'.
... donc le comportement du script de démarrage prefs.sh fonctionne maintenant comme annoncé. En créant un fichier appelé prefs.sh dans/etc/guest-session avec la ligne suivante :
moduser $USER -a -G plugdev,dialout
Cette commande entraînera le blocage de la session invité et son non chargement si vous l'incluez dans prefs.sh
. "moduser" n'est pas une commande valide. Utilisez cette ligne à la place:
usermod -a -G plugdev,dialout $USER
auto.sh
ne s’est jamais exécuté dans un contexte racine. prefs.sh
l'a fait jusqu'à Ubuntu 15.10 quand il a été obtenu par /usr/sbin/guest-account
, mais le code a été refactoré et, en 16.04, prefs.sh
est obtenu par /usr/share/lightdm/guest-session/setup.sh
qui n'est pas exécuté en tant que racine.
Je ne sais pas si ce changement de comportement est intentionnel. Sinon, il peut y avoir une raison de proposer un changement.
Vous ne savez pas exactement ce que vous voulez dire quand vous dites qu'une session d'invité ne peut pas accéder aux ports USB. Je sais que vous pouvez utiliser des clés USB, au moins. Il est possible que d’autres périphériques ne puissent pas être utilisés via AppArmor.
Modifier:
J'ai classé n rapport de bogue , et si accepté, vous pourrez utiliser prefs.sh
pour affecter l'invité à un ou plusieurs groupes, comme vous le pouviez auparavant.
En ce qui concerne les clés USB, j'ai effectué des tests et constaté que le format de la clé était important. Avec un stick formaté au format ext4, je ne pouvais ni lire ni écrire, mais une fois formaté en fat16, cela fonctionne bien.