
Esta pregunta está relacionada conotra pregunta más generalsobre cuentas de invitados. Éste es muy específico.
Configuración: Tengo muchos Dell Latitude E6410 más antiguos y algunos Dell Latitude 5450 más nuevos que uso en un salón de clases con la versión 16.04. Muchos estudiantes utilizan estas máquinas para diversos fines, entre ellos el análisis y la adquisición de datos a través de dispositivos USB conectados.
Las cuentas de invitado nos sirven bien para limpiar las máquinas entre inicios de sesión. La característica adicional de las cuentas de invitado es que al encender las máquinas y "olvidarlas", la máquina inicia sesión automáticamente en la cuenta de invitado e inicia una ventana del navegador. El problema es que las cuentas de invitados no tienen ningún privilegio para acceder a los puertos USB.
Una solución sencilla sería agregar la nueva cuenta de invitado (por ejemplo, guest-abf2) al grupo de acceso telefónico y plugdev para que los estudiantes puedan usar dispositivos conectados y memorias USB. Algo como:
moduser -a -G plugdev,dialout $USER
dentro de un script lo suficientemente temprano en el proceso de inicio de sesión para funcionar.
Esto es lo que he probado hasta ahora:
- colocando este comando en cualquiera de los dosganchos documentados:
auto.sh
yprefs.sh
en el/etc/guest-session
directorio. Ninguno de los dos funciona.prefs.sh
se ejecuta en el contexto del usuario y, aunqueauto.sh
se supone que se ejecuta en el contexto raíz, se ejecuta demasiado tarde para agregar la cuenta de invitado recién creada a los dos grupos. - modificando los scripts disponibles que ejecuta lightdm (Sí, sé que esto no es bueno, pero me estaba desesperando.) y todavía esto no funciona. Necesito ejecutar el comando moduser justo después de crear la cuenta pero antes del inicio de sesión real.
- De acuerdo adocumentación antigua (11 más o menos)hay un gancho llamado
setup.sh
que probé pero no estoy seguro de que ya funcione. - He pensado en escribir un script udev, pero parece terriblemente doloroso y la documentación parece estar orientada a montar unidades USB que no permiten el acceso a dispositivos USB. Podría estar equivocado aquí.
- En algún lugar me encontré con documentación que decía que había un mecanismo similar a un 'script' para agregar automáticamente nuevos usuarios a ciertos grupos, pero parece que no puedo encontrarlo. Esto podría funcionar en este caso o no, pero lo intentaré.
Respuesta1
Las cuentas de invitado se crean mediante el script de shell /usr/sbin/guest-account
.
Al final de la función add_account
que llama.agregar usuariopara crear el usuario. Si agrega la -G plugdev,dialout
opción aquí, eso debería funcionar.
Usardpkg-desviarpara evitar que un paquete actualizado sobrescriba su script modificado.
Respuesta2
Usarusermod
, no ' moduser
'.
... entonces el comportamiento del script de inicio prefs.sh ahora funciona como se anuncia. Creando un archivo llamado prefs.sh en /etc/guest-session con la siguiente linea:
moduser $USER -a -G plugdev,dialout
Ese comando hará que la sesión del invitado se bloquee y no se cargue si lo incluye en prefs.sh
. '`moduser' no es un comando válido. Utilice esta línea en su lugar:
usermod -a -G plugdev,dialout $USER
Respuesta3
auto.sh
nunca se ha ejecutado en un contexto raíz. prefs.sh
lo hizo hasta Ubuntu 15.10 cuando fue obtenido por /usr/sbin/guest-account
, pero el código fue refactorizado y en 16.04 prefs.sh
fue obtenido por /usr/share/lightdm/guest-session/setup.sh
el cual no se ejecuta como root.
No sé si este cambio de comportamiento es intencional. De lo contrario, puede haber una razón para proponer un cambio.
No estoy seguro de lo que quiere decir cuando dice que una sesión de invitado no puede acceder a los puertos USB. Sé que al menos puedes usar memorias USB. Posiblemente existan otros dispositivos cuyo uso se impida mediante AppArmor.
Editar:
presentéun informe de error, y si se acepta, podrá utilizarlo prefs.sh
para asignar al invitado a grupo(s) como lo hacía antes.
En cuanto a las memorias USB, hice algunas pruebas y descubrí que el formato de la memoria es importante. Con un dispositivo formateado en ext4 no podía leer ni escribir, pero cuando está formateado como fat16 funciona bien.
Respuesta4
No sé exactamente cuándo sucedió, pero lightdm se actualizó, por lo que el comportamiento del script de iniciopreferencias.shAhora funciona como se anuncia. Creando un archivo llamadopreferencias.shen/etc/sesión-invitadocon la siguiente línea:
moduser $USER -a -G plugdev,dialout
Logré exactamente lo que necesitaba para permitir a los estudiantes acceder a nuevos dispositivos USB en la cuenta de invitado.