Open Visual Traceroute, Opensuse Leap 42.1 and sudo – howto – II

In the last article
https://linux-blog.anracom.com/2016/08/16/open-visual-traceroute-opensuse-leap-42-1-and-sudo-howto-i/
of this series I discussed basic steps to get OVT running on an Opensuse Leap 42.1 system. All recipes were based on assigning root rights to the Java-execution of the application’s jar. Root rights were required to perform network packet capturing.

Now, on a multiuser system

  • we want to restrict the access rights to OVT to a group of selected users,
  • we want to improve the startup – such that the selected users do not need to provide the root password.

Note that none of the steps below solves any security problems. It only makes things more convenient.

Change access rights to the OVT files

As in the first article we assume that the OVT-files were placed in a directory “/PATH/TO/OVT” – e.g. “/opt/ovt”.

  • Step 1 – Create a group “ovt” : We create a user group named “ovt” (e.g. with “yast2” or at the commandline with “groupadd”). Then we add the users who later on shall get the privilege to execute “ovtr.sh” – even without giving the root password!
  • Step 2 – Change ownership of “/PATH/TO/OVT” and its subdirectories/files:
    chown -R root.ovt /PATH/TO/OVT
  • Step 3 – Change access rights to “/PATH/TO/OVT” and subdirectories/files:
    chmod -R u+rwx,g+rx-w,o-rwx /PATH/TO/OVT

Changes to /etc/sudoers

We change the file “/etc/sudoers” by using the “visudo” command. (Do NOT edit the “/etc/sudoers”-file directly with an editor – get acquainted with elementary vi-commands if necessary!) I only show options which have an impact on the execution of the “ovtr.sh” file, which starts the OVT Java-program. I do not care about other settings and restrictions in comparison to the standard /etc/sudoers file Opensuse delivers.

  • Step 4 – Add a “Default” definition to the sudoers file:
    Below the last line of existing DEFAULT-definitions in the standard “/etc/sudoers”-file of Opensuse add a line
     
    Defaults!/PATH/TO/OVT/ovtr.sh env_keep += “DISPLAY XAUTHORIZATION XAUTHORITY”
     
    (With the double quotation marks! And, of course, you have to replace /PATH/TO/OVT by the path where you actually installed OVT.) This settings will later allow to keep up the named environment variables (DISPLAY, XAUTHORITY, …) when the command “ovtr.sh” is executed.
  • Step 5 – Add a group related definition to the sudoers file:
    Add a line at the end of your settings for users and groups saying
     
    %ovt ALL = (root) NOPASSWD: /PATH/TO/OVT/ovtr.sh

The last rule guarantees that all members of the group “ovt” can execute

sudo /PATH/TO/OVT/ovtr.sh

without providing the root passsword (or their own password depending on whether Opensuse’s default setting “Defaults targetpw” is kept up in your “sudoers”-file). The first rule preserves the present environment settings of user (member of group “ovt”) regarding DISPLAY and XAUTHORITY, thus enabling the access to the presently open X11-screen.

Simplify the contents of “ovtr.sh”

After the changes described above we only need a small modification to ovtr.sh:

#!/bin/bash
java -Djava.awt.headless=false  -Xmx512m -jar org.leo.
traceroute.jar

 
This is now all that is required!

Let us test it

me@mytux:/opt/ovt> sudo ./ovtr.sh 
12:43:54.768 [main] INFO  org.leo.traceroute.Main - Open Visual Traceroute 1.6.3 
12:43:54.776 [main] INFO  org.leo.traceroute.install.Env - Java run-time version: 1.8.0_101
12:43:54.777 [main] INFO  org.leo.traceroute.install.Env - NASA World Wind Java 2.0 2.0.0
12:43:54.777 [main] INFO  org.leo.traceroute.install.Env - /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
12:43:54.777 [main] INFO  org.leo.traceroute.install.Env - OS:Linux / arch:amd64
Locale en_GB
12:43:57.230 [SwingWorker-pool-1-thread-1] INFO  o.leo.traceroute.core.geo.GeoService - Use geoip db /root/ovtr/GeoLiteCity.dat which is 0 day(s) old
12:43:58.818 [pool-2-thread-1] INFO  o.leo.traceroute.core.ServiceFactory - Try using device eth0 null
12:43:59.056 [pool-2-thread-2] INFO  o.leo.traceroute.core.ServiceFactory - Try using device br0 null
12:43:59.251 [pool-2-thread-3] INFO  o.leo.traceroute.core.ServiceFactory - Try using device virbr_vmw null
12:44:00.389 [pool-2-thread-8] INFO  o.leo.traceroute.core.ServiceFactory - Try using device vmnet1 null
12:44:01.488 [pool-2-thread-9] INFO  o.leo.traceroute.core.ServiceFactory - Try using device virbr1 null
12:44:02.589 [pool-2-thread-10] INFO  o.leo.traceroute.core.ServiceFactory - Try using device virbr2 null
12:44:03.691 [pool-2-thread-11] INFO  o.leo.traceroute.core.ServiceFactory - Try using device vmnet3 null
12:44:04.799 [pool-2-thread-12] INFO  o.leo.traceroute.core.ServiceFactory - Try using device virbr3 null
12:44:05.908 [pool-2-thread-13] INFO  o.leo.traceroute.core.ServiceFactory - Try using device virbr4 null
12:44:07.027 [pool-2-thread-14] INFO  o.leo.traceroute.core.ServiceFactory - Try using device virbr5 null
12:44:08.124 [pool-2-thread-15] INFO  o.leo.traceroute.core.ServiceFactory - Try using device virbr6 null
12:44:09.231 [pool-2-thread-17] INFO  o.leo.traceroute.core.ServiceFactory - Try using device lo null
12:44:11.467 [AWT-EventQueue-0] INFO  org.leo.traceroute.Main - Startup completed in 16704ms

 
ovt6

Great !

Final convenience steps

We eventually add the path of our OVT installation to the system path variable or tell the users of group “ovt” to add it to their environment.
Another way for a user to simplify the OVT startup would be to put a small script “ovsh” in his home directory with just the lines :

#!/bin/bash
sudo /opt/ovt/ovtr.sh

Then he/she may start OVT by executing “ovsh”. The only difference is that we do not need to type the “sudo”.

Security?

In this article we have made the startup of OVT more convenient by using the /etc/sudoers” file. We also restricted access to OVT to members of a group. Still: Java is executed with root rights. This is something I, personally, do not like because of security reasons. The next article, therefore, concentrates on the possibility to start OVT in a chroot jail.

Windows 7 Updates – ein erzwungener Blick ins alltägliche Leiden vieler Zeitgenossen …

Es gibt Tage, in die der Ärger schon einprogrammiert ist. Zu solchen Tagen gehören oftmals solche, an denen man sich gezwungenermaßen mit Windows auseinandersetzen muss. Ich war vorgewarnt: Eine gute Bekannte schafft es seit ca. 6 Monaten nicht mehr, ihr WIN 7-System auf den neuesten Stand zu bringen. Nach ihrer Aussage werkelt der PC Ewigkeiten vor sich hin – von 2 CPU-Kernen ihres Laptops sei einer immer ausgelastet. Aus dem Bereich des Windows-Update-Tools kämen zudem laufend Fehlermeldungen … Sie wisse nicht mehr, was sie tun solle … (Den Rat, auf Linux zu setzen, mag sie leider aber immer noch nicht annehmen …). Tja, mir fällt da nur der Satz ein: Drum prüfe, wer sich und seinen PC ewig bindet.

Aber kein Grund zur Schadenfreude: Gestern traf es mich selber. Ich war gezwungen im Zuge von Arbeiten für einen Kunden mal wieder meine 2 Windows 7-Systeme anzuwerfen. Beide laufen unter VMware – eines auf einem Linux-PC, das andere auf einem Linux-Laptop. Das letzte Mal hatte ich das erste Windows-System Anfang März 2016 gestartet – zum Updaten – aber auch da waren schon 2 Monate ohne Benutzung ins Land gegangen. Also habe ich seit Januar dieses Jahres ohne jeglichen Einsatz von Windows gelebt; eigentlich ein Grund zur Freude! Aber Windows wäre nicht Windows, wenn es keine Probleme gäbe – das dicke Ende kam dann prompt.

Im März hatte ich das Windows-System während einer Fernsehsendung sich selbst überlassen und den Update-Prozess nicht so genau verfolgt. Möglicherweise existierte das Problem, das ich jetzt feststellen musste, damals schon. Win 7 benötigte nach dem gestrigen Neustart einige Zeit, um festzustellen, dass es ca. 35 Updates einspielen muss. OK, nicht so verwunderlich. Also: Download und Installation gestartet. Dann vergingen Stunden (!) – ohne dass irgendetwas erkennbar Sinnvolles passierte.

Ein Blick in den Task Manager ergab: Ein “svhost.exe”-Prozess rödelte und rödelte auf dem System vor sich hin. Und wie bei meiner Bekannten ziemlich CPU-intensiv: Von 2 CPU-Kernen, die ich VMware zur Verfügung gestellt hatte, war einer immer zu 100% ausgelastet, manchmal aber auch beide. Die Nutzung des RAMs (4GByte) variierte oberhalb von 80 % bis hin zu 95%. Ohne jede Fortschrittsanzeige. Ein paralleler Blick auf unsere Firewall und unseren Router zeigte währenddessen so gut wie keine Netzaktivität.

Ich habe dann testweise mein anderes (ebenfalls virtualisiertes) Windows-7-System auf dem Laptop gestartet. Das gleiche Chaos – über Stunden. Auf dem PC-System habe ich dann nach 3 Stunden den Update-Prozess abgebrochen; es wurden dann drei kleinere Updates von 5 erfolgreich installiert; für 2 weitere kamen Fehlermeldungen, der Rest der 35 Updates wurde als abgebrochen angezeigt. Ein erneuter Versuch, Updates zu such und zu laden, mündete dann erneut in einen nicht enden wollenden Suchvorgang, erst mit hoher CPU-Auslastung durch einen msinstaller-Prozess, dann wieder svchost.exe – ohne jeden erkennbaren Fortschritt. Ich habe dann entnervt abgeschaltet.

Der einzige Trost: Ich war und bin nicht allein. Offenbar gab und gibt es seit Juli 2015 (!) regelmäßig Probleme mit Windows 7 und automatischen Updates. Ich gebe als Beleg nur 2 Links zu relativ aktuellen Blogs an, die gleichzeitig Hinweise zur Problembehebung enthalten; die Trefferliste von Betroffenen, die sich im Internet zu Schlagwörtern wie “windows 7 updates slow high cpu” äußern, ist aber gigantisch :

https://alexanderschimpf.de/windows-7-update-es-wird-nach-updates-gesucht
http://www.borncity.com/blog/2016/07/17/windows-7-und-die-langsame-update-suche-july-2016/comment-page-1/

Dass es auf manchen Systemen noch zu ganz anderen gravierenden Problemen mit Windows 7 Updates kommen kann, illustrieren folgende Artikel
http://www.computerworld.com/article/3070446/windows-pcs/windows-update-on-windows-7-is-still-a-problem.html
https://blog.botfrei.de/2016/05/microsoft-update-fuer-windows-7-sorgt-fuer-probleme/

Im übrigen scheint auch Win 10 von Update Problemen betroffen zu sein:
https://www.quora.com/Microsoft-Windows-10-Why-is-Windows-10-update-extremely-slow
https://support.microsoft.com/de-de/kb/3102810
http://www.itpro.co.uk/operating-systems/25802/15-windows-10-problems-and-how-to-fix-them-5

Was bin ich froh, dass ich mich mit dieser Art von Problemen normalerweise nicht auseinandersetzen muss! Mir tun die (z.T. regelmäßig) Betroffenen ehrlich leid.

Lösung für Win 7

Ich bin dann heute dem Ratschlag der Artikel hinter den beiden ersten Links gefolgt:

  • Schritt 1: Das Windows Update Tool über die Systemsteuerung (temporär) so einstellen, dass es nicht nach neuen Updates sucht.
  • Schritt 2: manueller Download folgenden Paketes, das viele Updates bündelt und einer Art Service Pack für Win 7 [64Bit] entspricht:
    windows6.1-kb3172605-x64_26f4cc7831a0d76393445b7b0a1a3ed5cd5b4047.msu
    Link:
    http://download.windowsupdate.com/d/msdownload/update/software/updt/2016/07/windows6.1-kb3172605-x64_26f4cc7831a0d76393445b7b0a1a3ed5cd5b4047.msu
    (siehe auch: https://alexanderschimpf.de/windows-7-update-pack)
     
    Nachtrag 29.09.2019: Nutzer eines 32Bit-Windows-7-Systems müssen sich folgendes Paket herunterladen und installieren:
    http://download.windowsupdate.com/d/msdownload/update/software/updt/2016/07/windows6.1-kb3172605-x86_4a9464688e111c4c1f63f94b543495f15ce6558d.msu
  • Schritt 3: Doppelklick auf die heruntergeladene Datei. Es öffnet sich ein rel. kleines, abgeundetes Fenster des Win 7 Update-Prozesses. Und der beginnt leider erneut mit der stundenlangen Suche nach Updates … grrr .. Die automatischen Update-Prozesse, die das Chaos verursachen laufen also noch.
  • Schritt 4: Taskmanager starten (Ctrl-Alt-Delete) => alle Prozesse anzeigen lassen und nach CPU-Verbrauch sortieren => den führenden “svchost.exe”-Prozess, der praktisch einen CPU-Kern (oder die ganze CPU) auslastet, manuell beenden.
  • Schritt 5: Erneuter Doppelklick auf die heruntergeladenenn msu-Datei. Leider kommt dann typischerweise noch eine Warnung des Typs: “Only one instance of wusa.exe is allowed to run” => Task-Manager => Prozessanzeige => alphabetisch sortieren => wusa.exe-Prozess beenden.
  • Schritt 6: Erneuter Klick auf die heruntergeladene msu-Datei => es öffnet sich nun ein (rechteckiges) Fenster, das nach wenigen Augenblicken eine Bestätigung zur Installation anfordert => Installation durchführen lassen.

Dann passiert tatsächlich was. Nach relativ kurzer Zeit (bei mir ca. 2 Minuten) ist die Installation fertig. Nach dem bei Windows üblichen
kompletten Systemneustart den Abschluss der Installation abwarten. Danach einloggen und die Einstellungen zum Windows-Update wieder ändern; bei mir “Nach Updates suchen, aber Zeitpunkt zum Herunterladen und Installieren manuell festlegen”. Dann erneut nach Updates suchen lassen.

Das Positive war, dass die Suche nun nur ca. 1 bis 2 Minuten dauerte. Merkwürdig allerdings, dass nun auf einmal 45 Updates gefunden wurden, die noch zu installieren waren (ohne die optionalen). Also deutlich mehr als ursprünglich erkannt. Über die Gründe kann man nur spekulieren: Vielleicht setzten die neuen Updates die vorherige Installation anderer Updates voraus – und Windows ist nicht in der Lage, das vernünftig zu organisieren. Oder schlicht Fehler? Wer weiß.
Das Ganze bestätigt nur, wie seltsam und ineffizient das Windows-Update-System organisiert ist – und wie der User eigentlich hilflos daneben steht. Jedenfalls liefen sowohl der Download und auch die Installation danach wieder zügig durch. Auch für optionale Updates und auch – mit gleicher Vorgehensweise – auf dem zweiten Win 7 System.

Habe aufgrund dieses Erfolges nun meine Bekannte unterrichtet: Auch da führte das Procedere zum Erfolg. Sie kann nun – nach einem halben Jahr Leiden und Arbeitsbehinderung durch hohe CPU-Auslastung eines nie enden wollenden Update-Prozesses – endlich wieder mit ihrem Windows arbeiten. Die Arme …

Fazit

Windows ist immer mal wieder ein Leiden. Gott sei Dank gibt es so nette Leute wie die Herren Dr. Schimpf und Hrn. Born, die die oben genannten Artikel geschrieben haben – Ihnen gebührt Dank für ihre Versuche und Tests. Wie einer von Ihnen sagte: Zumindest bis zum nächsten patch day …

Und zum Abschluss noch folgende Feststellung: Würde sich jemand mal die Mühe machen, die durch die Windows-Update-Probleme entstandene Arbeitsbehinderung für betroffene Normal-User in Deutschland zu ermitteln und hochzurechnen, so würde man wahrscheinlich feststellen, dass die Nutzung von Win 7 im letzten Jahr massive volkswirtschaftliche Schäden verursacht hat. Neben verlorener Arbeitszeit ist auch der verursachte überflüssige Stromverbrauch zu nennen.

Ein Grund mehr, sich über sein Linux zu freuen – und den relativen Komfort der dortigen Paket-Manager zu genießen.