Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

No se apagan o reinician los equipos con la MAX9 #25

Open
rroobbeerr opened this issue Sep 21, 2017 · 5 comments
Open

No se apagan o reinician los equipos con la MAX9 #25

rroobbeerr opened this issue Sep 21, 2017 · 5 comments
Assignees
Labels
Milestone

Comments

@rroobbeerr
Copy link

A pesar de que compruebo que puedo hacer login con el usuario max-control, la orden de apagar o reiniciar un equipo no funciona. Esto es lo que me muestra el debug:

Equipo 'PROFESOR20' apagado.
CONSOLA DE DEPURACIÓN
Acción poweroff en equipo 'PROFESOR20' [88:d7:f6:7a:0c:54] tiempo: 0.0096979141235352
COMPUTER:action(poweroff) mac=88:d7:f6:7a:0c:54 uid=PROFESOR20
COMPUTER:action(poweroff) method exists
WINEXE:getIpAddress(PROFESOR20) cmd='net lookup PROFESOR20.iit.lan'
WINEXE:getIpAddress(PROFESOR20)=172.20.10.20
is_alive()172.20.10.20
is_live(172.20.10.20) host is alive, time: 0.048306941986084
is_alive()172.20.10.20
is_live(172.20.10.20) host is alive, time: 0.049829959869385
isLinux(172.20.10.20):port open, time: 0.050092935562134
WINEXE:linuxexe() cmd='sudo max-control poweroff 20'
WINEXE:linuxexe(172.20.10.20) cmd='sudo max-control poweroff 20'
Finalizadas acciones tiempo: 0.51906514167786
Session cache=120000
Memory limit=128M
VERSION=5.0~max8
QUERY_STRING=
debug_array() from=index.php POST
debug_array() from=index.php GET
index.php GET key=module value=power
index.php GET key=action value=docomputer
index.php GET key=subaction value=poweroff
index.php GET key=args value=PROFESOR20
Tiempo de ejecución: 0.51916599273682

@rroobbeerr rroobbeerr added the bug label Sep 21, 2017
@rroobbeerr rroobbeerr added this to the 2017 milestone Sep 21, 2017
@rroobbeerr
Copy link
Author

Este problema quizás tenga más que ver con la configuración de MAX que con el max-control. Para unir un equipo al LDAP he seguido el procedimiento que tiene zentyal:
https://wiki.zentyal.org/wiki/Authenticating_Linux_client_against_Samba
El procedimiento es bastante sencillo ya que apenas hay que tocar ficheros de configuración, me ha sorprendido que ni siquiera el de samba, pero me han aparecido otros problemas.

El paquete "mktutil" que viene por defecto con Ubuntu tiene un bug y falla, en vez de ese utilizo la versión "msktutil_1.0-1_amd64.deb" que funciona perfectamente. Adjunto dicho paquete y el script que utilizo para unirlo al dominio donde configura algunas cosas.

No he conseguido integrar las carpetas del usuario(Escritorio, Documentos, Imágenes, etc.) con las de Windows, de momento sólo se monta en "z" la home del usuario para que pueda acceder a su perfil móvil. Uno de los problemas es que Windows crea las carpetas con nombre inglés(aunque en su interfaz salen en español) pero MAX crea los nombres en español y por eso no se solapan y cuando he conseguido solaparlas pasaban cosas raras como que no se veía bien su icono y no se tenía acceso.
Otro problema encontrado es que la autentificación por ssh falla aleatoriamente debido a que la cache de grupos que maneja "sssd" no funciona bien o falta afinarla de alguna manera(ya he probado algunos parámetros sin éxito), se puede comprobar que los comandos "id usuario", "getent" o "groups" no devuelven los grupos correctos e incluso diferentes resultados.

Al principio creía que era por esto por lo que no hacía caso a los comandos de apagado pero no, cuando falla la caché lo que se obtiene es un error de permiso denegado por lo que hay otro problema añadido que quizas sea de permisos o de seguridad. Por lo que he visto en /var/log/syslog parece que se recibe la señal de reinicio o apagado pero luego es como si se cancelara.
unir_al_ldap.tar.gz

@mariodebian
Copy link
Member

Esa forma de unir equipos al dominio no es la soportada por el panel max-control.

En MAX 8.0 y 9.0 hay un paquete max-domain (no confundir con el antiguo max-ldap) que es un interfaz gráfico a muchas de esas cosas que haces en tu script y que usa "likewise-open" para unir el equipo al dominio.

Otro de los scripts que tiene es: https://github.com/max-linux/max-desktop/blob/master/max-domain/max-control que lo que hace es recibir las órdenes remotas de reinicio, apagado,montar una ISO, etc...

Veo que likewise-open (después de recompilarlo) si registra la máquina en el dominio pero no se ven los usuarios. Tendré que mezclar tu script con el mío en el paquete max-domain.

@rroobbeerr
Copy link
Author

Bueno he descubierto una posible solución. El culpable de que hayan dejado de funcionar los comandos parece ser que es el systemd, ya que ahora el poweroff y el reboot realmente son enlaces symbolicos a systemctl y ya no funcionan como antes, por ejemplo el poweroff no admite el parametro de tiempo. Para apagar la máquina con IP 172.20.11.51 ejecuto desde otro equipo "ssh max-control@172.20.11.51 poweroff", y obtengo:

Failed to set wall message, ignoring: Interactive authentication required.
Failed to power off system via logind: Interactive authentication required.
Failed to start poweroff.target: Interactive authentication required.
See system logs and 'systemctl status poweroff.target' for details.
Failed to open /dev/initctl: Permiso denegado
Failed to talk to init daemon.

Si añado "sudo" al poweroff: ssh max-control@172.20.11.51 sudo poweroff
Obtengo:
sudo: sin tty presente y no hay programa askpass especificado

De las soluciones que he buscado la que me ha funcionado ha sido la siguiente. Si configuro el sudo para que no pida contraseña al usuario max-control creando el fichero /etc/sudoers.d/max-control con el contenido:
max-control ALL = NOPASSWD: /sbin/reboot, /sbin/poweroff
...entonces consigo apagar/reiniciar la máquina. Desde el panel de max-control sigue sin funcionar, para que funcione hay que modificar un par de líneas en el fichero
/usr/share/max-control/classes/winexe.class.php:
Cambiar:
$targetcmd="sudo max-control $targetcmd";
por:
$targetcmd="sudo $targetcmd";
y cambiar:
return $this->linuxexe('poweroff '.POWEROFF_REBOOT_TIMEOUT);
por
return $this->linuxexe('poweroff');

Con este último cambio se pierde la posibilidad de apagar a los X segundos, pero es que el poweroff ya no deja pasar un tiempo, lo único que se me ocurre sería utilizar "shutdown" pero el mínimo tiempo que permite es 1 minuto.

@mariodebian
Copy link
Member

Si vuelves a ver el archivo que ya te he enlazado antes: https://github.com/max-linux/max-desktop/blob/master/max-domain/max-control ...

Veras que se hace un sleep antes de un reboot o poweroff.

Si no quieres instalar max-domain porque prefieres tu archivo, copia este y dale permisos en sudo para que se ejecute sin contraseña.

Este script también es el que monta las ISOS.

@rroobbeerr
Copy link
Author

Ahora que recalcas ese script entiendo mejor el "winexe.class.php", estaba interpretando "max-control" como nombre de usuario pero ya veo que hace referencia a este script.

El caso es que la instalación de "max-domain" me ha dado algún problemilla. Al instalarlo y reiniciar el equipo ya no carga la MAX9, ni siquiera se llegan a activar las consolas auxiliares para poder iniciar una sesión. Finalmente he descubierto que el culpable era el fichero "/etc/lighdhtml.com" que se crea al instalar "max-domain", al eliminarlo todo volvió a la normalidad.

También he visto que el script "/usr/bin/max-control" utiliza la orden "ck-history" del paquete "consolekit". Este paquete no esta instalado por defecto en MAX9. De todas formas veo que se utiliza ck-history para obtener una lista de usuarios para enviarles un mensaje, pero estos tampoco aparecen. Aún así una vez instalado consolekit el apagado sigue sin funcionar, al ejecutar la orden por ssh obtengo:

madrid@max80:~$ ssh max-control@172.20.11.51 sudo max-control poweroff 20
max-control@172.20.11.51's password: 
sudo: sin tty presente y no hay programa askpass especificado

Esta vez creando el fichero /etc/sudoers.d/max-control con el siguiente contenido, tampoco funciona:
max-control ALL = NOPASSWD: /usr/bin/max-control

Si en vez de para el usuario "max-control" configuro el sudoers para el usuario local "consejería", entonces sí funciona:

madrid@max80:~$ ssh consejeria@172.20.11.51 sudo max-control poweroff 5
consejeria@172.20.11.51's password: 
sudo: usuario desconocido: 
sudo: no se puede inicializar la política de plugin

Aunque salen esos mensajes el equipo se apaga. Creo que no pilla el usuario "max-control" por que es un usuario del ldap y hay que ponerle alguna coletilla como "iit.lan\max-control" o algo así en el fichero de sudoers, pero no me ha funcionado con las que he probado X-(

Mi script tiene la ventaja de que lo puedo ejecutar por ssh al ser todo comandos de consola, estaría bien que "max-domain" tuviera esa posibilidad pero "max-domain" es mas fácil para los usuarios finales, así que en cuanto pueda también lo probaré para unir un equipo al dominio y te voy comentando.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants