Use X11 greeter for Linux RustDesk access
This commit is contained in:
@@ -47,7 +47,7 @@ de sesión de GDM también debe permanecer deshabilitado.
|
|||||||
8. Registra `lightdm` y `cinnamon-screensaver` como inicios interactivos ante las políticas GPO de SSSD. En equipos con LightDM oculta la lista de cuentas y conserva únicamente el ingreso manual: usuario y contraseña, necesario para el primer acceso de un usuario del dominio.
|
8. Registra `lightdm` y `cinnamon-screensaver` como inicios interactivos ante las políticas GPO de SSSD. En equipos con LightDM oculta la lista de cuentas y conserva únicamente el ingreso manual: usuario y contraseña, necesario para el primer acceso de un usuario del dominio.
|
||||||
9. Con `--enable-hyperv-enhanced-session`, configura XRDP sobre Hyper-V sockets para que VMConnect pueda usar **Sesión mejorada**, repara certificados incompletos, registra `xrdp-sesman` en el mismo mapa interactivo y valida ambos servicios XRDP.
|
9. Con `--enable-hyperv-enhanced-session`, configura XRDP sobre Hyper-V sockets para que VMConnect pueda usar **Sesión mejorada**, repara certificados incompletos, registra `xrdp-sesman` en el mismo mapa interactivo y valida ambos servicios XRDP.
|
||||||
10. Instala el fondo azul, las fuentes Indivisa y un autoinicio compatible con Cinnamon, GNOME y XFCE. En cada sesión gráfica genera el saludo con el nombre del usuario y la ubicación/OU del equipo obtenidas de AD.
|
10. Instala el fondo azul, las fuentes Indivisa y un autoinicio compatible con Cinnamon, GNOME y XFCE. En cada sesión gráfica genera el saludo con el nombre del usuario y la ubicación/OU del equipo obtenidas de AD.
|
||||||
11. Instala RustDesk 1.4.9 desde el paquete oficial comprobado, configura exclusivamente el servidor institucional y crea una contraseña aleatoria de acceso desatendido. La contraseña no se muestra en Linux: viaja cifrada con la clave pública del controlador y éste la conserva mediante su inventario protegido.
|
11. Instala RustDesk 1.4.9 desde el paquete oficial comprobado, configura exclusivamente el servidor institucional y crea una contraseña aleatoria de acceso desatendido. También fuerza el greeter de GDM o SDDM a usar X11, porque RustDesk no admite controlar la pantalla de acceso bajo Wayland; LightDM ya usa X11. La contraseña no se muestra en Linux: viaja cifrada con la clave pública del controlador y éste la conserva mediante su inventario protegido. Si el enrolador cambia el backend gráfico, reinicia el equipo al finalizar para activarlo.
|
||||||
|
|
||||||
El objeto de equipo aparece como `NOMBRE` en `OU=Laboratorio`. SSSD registra su registro A cuando la actualización DNS dinámica está activada.
|
El objeto de equipo aparece como `NOMBRE` en `OU=Laboratorio`. SSSD registra su registro A cuando la actualización DNS dinámica está activada.
|
||||||
|
|
||||||
|
|||||||
@@ -218,6 +218,89 @@ EOF
|
|||||||
wait_for_rustdesk_server
|
wait_for_rustdesk_server
|
||||||
}
|
}
|
||||||
|
|
||||||
|
configure_x11_login_screen() {
|
||||||
|
local display_manager=''
|
||||||
|
local configuration_changed=false
|
||||||
|
local configuration_path=''
|
||||||
|
local temporary_configuration=''
|
||||||
|
|
||||||
|
if [[ -L /etc/systemd/system/display-manager.service ]]; then
|
||||||
|
display_manager=$(basename "$(readlink -f /etc/systemd/system/display-manager.service)")
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$display_manager" in
|
||||||
|
gdm3.service|gdm.service)
|
||||||
|
if [[ $display_manager == gdm3.service ]]; then
|
||||||
|
configuration_path='/etc/gdm3/custom.conf'
|
||||||
|
else
|
||||||
|
configuration_path='/etc/gdm/custom.conf'
|
||||||
|
fi
|
||||||
|
install -d -o root -g root -m 755 "$(dirname "$configuration_path")"
|
||||||
|
[[ -f $configuration_path ]] || printf '[daemon]\n' >"$configuration_path"
|
||||||
|
temporary_configuration=$(mktemp)
|
||||||
|
python3 - "$configuration_path" "$temporary_configuration" <<'PY'
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
source = Path(sys.argv[1])
|
||||||
|
destination = Path(sys.argv[2])
|
||||||
|
lines = source.read_text(encoding='utf-8').splitlines()
|
||||||
|
daemon_start = None
|
||||||
|
daemon_end = len(lines)
|
||||||
|
for index, line in enumerate(lines):
|
||||||
|
if re.match(r'^\s*\[daemon\]\s*$', line, re.IGNORECASE):
|
||||||
|
daemon_start = index
|
||||||
|
continue
|
||||||
|
if daemon_start is not None and index > daemon_start and re.match(r'^\s*\[[^]]+\]\s*$', line):
|
||||||
|
daemon_end = index
|
||||||
|
break
|
||||||
|
|
||||||
|
if daemon_start is None:
|
||||||
|
if lines and lines[-1]:
|
||||||
|
lines.append('')
|
||||||
|
lines.extend(['[daemon]', 'WaylandEnable=false'])
|
||||||
|
else:
|
||||||
|
setting = re.compile(r'^\s*[#;]?\s*WaylandEnable\s*=.*$', re.IGNORECASE)
|
||||||
|
for index in range(daemon_start + 1, daemon_end):
|
||||||
|
if setting.match(lines[index]):
|
||||||
|
lines[index] = 'WaylandEnable=false'
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
lines.insert(daemon_end, 'WaylandEnable=false')
|
||||||
|
|
||||||
|
destination.write_text('\n'.join(lines) + '\n', encoding='utf-8')
|
||||||
|
PY
|
||||||
|
if ! cmp -s "$temporary_configuration" "$configuration_path"; then
|
||||||
|
install -o root -g root -m 644 "$temporary_configuration" "$configuration_path"
|
||||||
|
configuration_changed=true
|
||||||
|
fi
|
||||||
|
rm -f "$temporary_configuration"
|
||||||
|
;;
|
||||||
|
sddm.service)
|
||||||
|
configuration_path='/etc/sddm.conf.d/91-sgu-rustdesk-x11.conf'
|
||||||
|
install -d -o root -g root -m 755 "$(dirname "$configuration_path")"
|
||||||
|
temporary_configuration=$(mktemp)
|
||||||
|
printf '%s\n' '[General]' 'DisplayServer=x11' >"$temporary_configuration"
|
||||||
|
if ! cmp -s "$temporary_configuration" "$configuration_path"; then
|
||||||
|
install -o root -g root -m 644 "$temporary_configuration" "$configuration_path"
|
||||||
|
configuration_changed=true
|
||||||
|
fi
|
||||||
|
rm -f "$temporary_configuration"
|
||||||
|
;;
|
||||||
|
lightdm.service)
|
||||||
|
# LightDM's greeter already runs on X11, which RustDesk supports.
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
printf 'WARNING: Could not identify a supported display manager; RustDesk login-screen access may require X11 configuration.\n' >&2
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [[ $configuration_changed == true ]]; then
|
||||||
|
printf 'RustDesk login-screen support was configured for X11; reboot after enrollment to activate it.\n'
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
wait_for_rustdesk_server() {
|
wait_for_rustdesk_server() {
|
||||||
local attempt
|
local attempt
|
||||||
local candidate_id
|
local candidate_id
|
||||||
@@ -326,6 +409,7 @@ resolve_registration_share
|
|||||||
initialize_machine_kerberos
|
initialize_machine_kerberos
|
||||||
install_rustdesk
|
install_rustdesk
|
||||||
read_server_configuration
|
read_server_configuration
|
||||||
|
configure_x11_login_screen
|
||||||
configure_rustdesk
|
configure_rustdesk
|
||||||
set_access_password
|
set_access_password
|
||||||
register_with_controller
|
register_with_controller
|
||||||
|
|||||||
Reference in New Issue
Block a user