web-dev-qa-db-fra.com

Ajouter un compte invité créé lors de la connexion à certains groupes?

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:

  • placer cette commande dans l’un ou l’autre des crochets documentés : 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.
  • si vous modifiez les scripts disponibles, lightdm exécute (. Oui, je sais que ce n’est pas bon, mais j’étais désespéré ) et cela ne fonctionne toujours pas. J'ai besoin d'exécuter la commande moduser juste après la création du compte mais avant la connexion réelle.
  • Selon ancienne documentation (environ 11) il y a un hook appelé setup.sh que j'ai essayé mais je ne suis pas sûr que ce hook fonctionne plus.
  • J'ai étudié la possibilité d'écrire un script udev, mais cela semble terriblement pénible et la documentation semble orientée vers le montage de clés USB ne permettant pas l'accès à des périphériques USB. Je peux me tromper ici.
  • Quelque part, j'ai découvert dans la documentation qu'il existait un mécanisme similaire à un "script" pour ajouter automatiquement de nouveaux utilisateurs à certains groupes, mais je ne semble pas pouvoir le trouver. Cela peut fonctionner dans ce cas ou pas, mais je vais essayer.
2
pbeeken

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é.

0
pbeeken

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é.

2
Florian Diesch

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
1
Godvalve

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.

0