Google Chrome löscht sich selbst per Update

„Google ist dumm, wie Esel ist schlau“ würde unser Lieblings-Pseudo-Osteuropäer sagen, denn Google selbst hat Chrome per Update auf allen RPM basierten Linuxservern unabsichtlich entfernt.

Grund war ein falsch zusammengebautes RPM im Google Repository. Die Datei /usr/bin/google-chrome-stable fehlte im Update vom 2. September 2016 einfach. Lustigerweise ist das ausgerechnet die wichtigste 😉

Sep 02 09:11:48 INFO Upgraded: google-chrome-stable-53.0.2785.89-1.x86_64
Sep 02 09:11:49 INFO Cleanup: google-chrome-stable-52.0.2743.116-1.x86_64

# rpm -ql google-chrome-stable

/opt/google/chrome/xdg-mime

/opt/google/chrome/xdg-settings
/usr/bin/google-chrome
/usr/share/applications/google-chrome.desktop
/usr/share/gnome-control-center/default-apps/google-chrome.xml
/usr/share/man/man1/google-chrome.1

Mit dem heutigen Update google-chrome-stable-53.0.2785.92-1.x86_64.rpm kam die Datei dann wieder auf die Computer drauf 🙂

Ursache für den Fehler dürfte eine neue Directoyhierarchie sein, die aus dem Binary einen Link gemacht hat:

0 lrwxrwxrwx. 1 root root   31  3. Sep 20:54 /usr/bin/google-chrome -> /etc/alternatives/google-chrome
0 lrwxrwxrwx. 1 root root   29  3. Sep 20:54 /etc/alternatives/google-chrome -> /usr/bin/google-chrome-stable

0 lrwxrwxrwx. 1 root root   32  2. Sep 01:20 /usr/bin/google-chrome-stable -> /opt/google/chrome/google-chrome
4 -rwxr-xr-x. 1 root root 2112  2. Sep 01:20 /opt/google/chrome/google-chrome

Update: 6.9..2016

Heute kam dann der Grund für das wohl überhastete Update :

Am 1. 9. 2016 gab es Advisories für Chrom und Chromium, die eine echt krasse Sicherheitslücke im Browser offenbaren:

Mehrere Schwachstellen in Google Chrome vor Version 53.0.2785.89 auf Windows,
Mac OS X und Linux Systemen ermöglichen einem entfernten, nicht
authentifizierten Angreifer das Ausführen beliebigen Programmcodes, Umgehen
von Sicherheitsvorkehrungen, Darstellen falscher Informationen, Durchführen
von Cross-Site-Scripting (XSS)-, Universal-Cross-Site-Scripting (UXSS)- und
Denial-of-Service (DoS)-Angriffen sowie weitere nicht spezifizierte Angriffe.

In dem Licht betrachtet, könnte es auch Absicht gewesen sein, die Browser zu deaktivieren und die User zu schützen.

QMMP & MP3 & Fedora 24

Na, auf Fedora 24 aktualisiert und der MP3 Sound ist weg ?

Kein Problem. Alles was wir brauchen sind Nerven aus Stahl und eine Rootkonsole 😀

Zunächst mal ladet Ihr Euch alle Pakete zu Eurer Prozessorversion von dieser Seite runter :

http://koji.fedoraproject.org/koji/buildinfo?buildID=710733

Debug und Infomodule braucht man nicht und Ja, das sind die Pakete für Fedora 23.. das macht nichts.

Dann ladet Ihr die alten QMMP Packs von RPMFusion runter, die beim Update gelöscht wurden:

http://download1.rpmfusion.org/free/fedora/releases/23/Everything/x86_64/os/Packages/q/


dnf erase qmmp*

cd ~/Downloads
rpm -i -nodeps qmmp*

VORHER prüfen, ob auch nur die RPMs in dem Verzeichnis sind, die man installieren will, ansonsten installiert rpm nämlich alles durcheinander.

Das wars schon. MP3 Wiedergabe geht wieder.

Tip: Update der Inhalte eines SQL Views

In einer Datenbank wie MySQL kann man sich Selects als Pseudotabellen anlegen und dann selbst wieder über den diese Tabelle einen Select bauen. So etwas nennt man einen View.

Beispiel:

SELECT a.vorname,a.name,b.beruf as beruf FROM Personen as a,Berufe as b WHERE a.berufsid=b.id;

Wenn man diesen Select als View anlegt, hat man drei Felder : Vorname,Name,Beruf

Nennen wir den View mal Test, wäre dieser Select möglich :

SELECT vorname,name FROM Test WHERE beruf = „Bäcker“;

Wenn man nun versucht den VIEW mit UPDATE zu ändern, geht das eigentlich nicht, weil es eine nicht eindeutige Beziehung der Datensätze untereinander ist.

Für mein aktuelles Pandora Projekt habe ich nun einen View gebaut, bei dem das Update tatsächlich möglich ist:

select `pa`.`id` AS `id`,`pa`.`vorname` AS `vorname`,`pa`.`nachname` AS `nachname`,`pa`.`server` AS `server`,`pc`.`value` AS `friendmode` from (`pandora`.`pandora_config` `pc` join `pandora`.`pandora_account` `pa`) where ((`pa`.`id` = `pc`.`uid`) and (`pc`.`name` = ‚michsuchen‘))

Das funktioniert aufgrund dieser Beziehung „((`pa`.`id` = `pc`.`uid`)“ , denn in beiden Tabellen gibt es exakt einen eindeutigen Datensatz. d.b. :

Für jede Person gibt es exakt einen Config Eintrag in der anderen Tabelle. Damit kann der Datenbankserver jetzt die logische Verbindung der Datensätze „rückwärts“ auflösen und in der richtigen Tabelle den richtigen Eintrag ändern:

UPDATE `pandora_userliste` SET friendmode = ‚erlauben‘ WHERE vorname =’meinvorname‘;

Damit ist der View Read/Writeable geworden was es man mit Hilfe des ORDB Frameworks ausnutzen kann, denn Views werden ein Java Datenobjekte erzeugt. Über Views lassen sich schlanke Strukturen und Datenbankobjekte erzeugen, die dazu noch updatefähig sein können (aber nicht müssen). Als Folge davon erhält man übersichtliche Datenbankstrukturen, die von einem Menschen leicht gelesen und verstanden werden können, aber trotzdem Datenbanktechnisch höchst performant gestaltet sein können.