Schlagwort-Archive: Debian

HowTo – Install CACert Root Certificates in Debian

Problem:
Seit neustem haben sich die Maintainer des Debian Paketes ca-certificates dazu entschieden, die Root Zertifikate von CACert aus dem Paket zu entfernen.
Dazu existiert auch ein entsprechender Bugreport.
Die Maintainer folgen nun dem Mozilla Zertifikatsspeicher – und genau in diesen Speicher haben es die CACert Stammzertifikate (aus Kostengründen) nie geschafft. Details dazu finden sich bei CAcert.

ca-certificates (20140223) unstable; urgency=medium

Debian will no longer ship cacert.org certificates.

Update mozilla/certdata.txt to version 1.97.
Certificates added (+), removed (-), and renamed (~):
+ "ACCVRAIZ1"
+ "Atos TrustedRoot 2011"
+ "E-Tugra Certification Authority"
+ "SG TRUST SERVICES RACINE"
+ "T-TeleSec GlobalRoot Class 2"
+ "TWCA Global Root CA"
+ "TeliaSonera Root CA v1"
+ "Verisign Class 3 Public Primary Certification Authority"
~ "Verisign Class 3 Public Primary Certification Authority"_2
(both Verisign Class 3 CAs now included with duplicate CKA_LABEL fix)
- "Entrust.net Secure Server CA"
- "Firmaprofesional Root CA"
- "GTE CyberTrust Global Root"
- "RSA Root Certificate 1"
- "TDC OCES Root CA"
- "ValiCert Class 1 VA"
- "ValiCert Class 2 VA"
- "Wells Fargo Root CA"

-- Michael Shuler Sun, 23 Feb 2014 15:21:39 -0600

Lösung:
Wir müssen nun die Root Zertifikate selbst installieren um einen Zustand wie vor dem Removal zu haben.
Als User root muss folgendes durchgeführt werden

# Erstellen eines eigenen Zertifikatspeichers unter /usr/local
mkdir -p /usr/local/share/ca-certificates
# Download der Stammzertifikate von CACert
wget http://www.cacert.org/certs/root.crt -O /usr/local/share/ca-certificates/cacert-root.crt
wget http://www.cacert.org/certs/class3.crt -O /usr/local/share/ca-certificates/cacert-class3.crt
# Symlinks in /etc/ssl/certs erstellen
ln -s /usr/local/share/ca-certificates/cacert-root.crt /etc/ssl/certs/cacert-root.crt
ln -s /usr/local/share/ca-certificates/cacert-class3.crt /etc/ssl/certs/cacert-class3.crt
# Zertifikatsspeicher aktualisieren
update-ca-certificates

Nun sind die CACert Zertifikate wieder vertrauenswürdig.

Debian für Freetz Kompilierung vorbereiten

Problem:
Ich möchte mir ein freetz Image für den Router erstellen – was muss ich tun?

Lösung:
Zuerst sucht man sich ein Plätzchen für die Quellen, ich nutze dazu /opt/sources – dort dürfen nur die User der Gruppe src schreiben. Mit „id“ kann man prüfen, ob man Mitglied der Gruppe ist.

sudo mkdir /opt/sources
sudo chmod 775 /opt/sources
sudo chgrp src /opt/sources
cd /opt/sources

Jetzt müssen noch einige Pakete installiert werden

sudo apt-get install subversion zlib1g-dev libacl1-dev libncurses5-dev libcap-dev autoconf automake libtool bison flex libc6-dev-i386 gcc-multilib lib32ncurses5-dev

Nun kanns schon losgehn

cd /opt/sources
# Entwicklertrunk ist mir am liebsten 😉
svn co http://svn.freetz.org/trunk freetz-devel
cd freetz-devel
make menuconfig
make

FIX: Standby bei Debian jessie/sid funktioniert nicht

Problem:
Mein Laptop läuft auf Debian Testing (Jessie) und seit dem Upgrade funktioniert die Energieverwaltung nicht mehr richtig. Ich möchte, dass der Laptop in den Standby Modus geht – sowohl wenn ich den Deckel schließe als auch wenn ich die Hotkeys (z.B. Fn + F5) verwende. Übers Terminal, mittels pm-suspend getriggert, passiert Erwartetes einwandfrei.

Lösung:
Ich habe eben hier gefunden.

apt-get install systemd-shim systemd-ui

Das hat genügt, die vermissten Funktionen (Standby via LID und Hotkey) waren SOFORT verfügbar!

Das Paket systemd-ui ist nicht essentiell – ich fand aber ein zugehöriges Frontend verlockend. Dieses scheint zum jetzigen Zeitpunkt jedenfalls nocht nicht zu funktionieren

user@host:~$ sudo systemadm

** (systemadm:9050): CRITICAL **: file /home/kay/data/src/systemd-ui/src/systemadm.vala: line 335: uncaught error: GDBus.Error:org.freedesktop.DBus.Error.UnknownMethod: No such method `Subscribe' (g-dbus-error-quark, 19)

(systemadm:9050): GLib-GObject-CRITICAL **: g_object_ref_sink: assertion `G_IS_OBJECT (object)' failed

(systemadm:9050): Gtk-CRITICAL **: gtk_widget_show_all: assertion `GTK_IS_WIDGET (widget)' failed


Debian Filename: pool/main/s/systemd-ui/systemd-ui_2-2_amd64.deb

Diesen Pfad solltet ihr bei der genannten Version ebenfalls sehen – bei mir gibts den jedenfalls nicht! 😀
/home/kay/data/src/systemd-ui/src/systemadm.vala

Oracle Java Package erstellen unter Debian

Problem:
Oracles Java wird benötigt, ist aber in keinem Repo verfügbar.

Lösung:
Ich habe hier schon einen anderen Beitrag zur manuellen Installation von Java verfasst, dieser ist hiermit ungültig und sollte NICHT MEHR VERWENDET WERDEN!!

Um die Dinge der Installation rückgängig zu machen, empfiehlt sich die Ausführung folgender Befehle als root

Achtung, hier wird die 64bit Version genutzt! Für 32bit müssen die Pfade (amd64 –> i386) entsprechend angepasst werden!


update-alternatives --remove java /usr/lib/jvm/java-7-oracle/bin/java
update-alternatives --remove javac /usr/lib/jvm/java-7-oracle/bin/javac
update-alternatives --remove javaws /usr/lib/jvm/java-7-oracle/bin/javaws
update-alternatives --remove javadoc /usr/lib/jvm/java-7-oracle/bin/javadoc
update-alternatives --remove javah /usr/lib/jvm/java-7-oracle/bin/javah
update-alternatives --remove javap /usr/lib/jvm/java-7-oracle/bin/javap
update-alternatives --remove java_vm /usr/lib/jvm/java-7-oracle/jre/bin/java_vm
update-alternatives --remove jvisualvm /usr/lib/jvm/java-7-oracle/bin/jvisualvm
update-alternatives --remove policytool /usr/lib/jvm/java-7-oracle/jre/bin/policytool
update-alternatives --remove ControlPanel /usr/lib/jvm/java-7-oracle/jre/bin/ControlPanel
update-alternatives --remove iceweasel-javaplugin.so /usr/lib/jvm/java-7-oracle/jre/lib/amd64/libnpjp2.so
update-alternatives --remove firefox-javaplugin.so /usr/lib/jvm/java-7-oracle/jre/lib/amd64/libnpjp2.so
update-alternatives --remove mozilla-javaplugin.so /usr/lib/jvm/java-7-oracle/jre/lib/amd64/libnpjp2.so
update-alternatives --remove midbrowser-javaplugin.so /usr/lib/jvm/java-7-oracle/jre/lib/amd64/libnpjp2.so
update-alternatives --remove iceape-javaplugin.so /usr/lib/jvm/java-7-oracle/jre/lib/amd64/libnpjp2.so
update-alternatives --remove xulrunner-javaplugin.so /usr/lib/jvm/java-7-oracle/jre/lib/amd64/libnpjp2.so
update-alternatives --remove xulrunner-addons-javaplugin.so /usr/lib/jvm/java-7-oracle/jre/lib/amd64/libnpjp2.so

Im Anschluss sollte das aktuellste, verfügbare Paket java-package installiert werden

apt-get install java-package

Ich habe die Debian Backports eingebunden (Howto) und habe daher zusätzlich folgenden apt-get Schalter genutzt.
-t wheezy-backport
Nun ist das Tool make-jpkg bereitgestellt, mit welchem künftig das Installationspaket / Update generiert werden wird! =)

Zuerst lädt mal auf der Java-Webseite das aktuelle Paket für die verwendete Architekture (i386/amd64) herunter. Dann führt man als User (!! Wichtig, als root wirds mit Fehler enden !!)

make-jpkg jdk-7u51-linux-x64.tar.gz

aus.

Am Ende erhält man daraus ein Paket, in meinem Fall oracle-java7-jdk_7u51_amd64.deb
Dieses kann als root wie gewohnt installiert werden!

dpkg -i oracle-java7-jdk_7u51_amd64.deb

Im Anschluss sollte man sich vergewissern, welche Applikationen denn für die Bereitstellung von „java“ noch installiert sind. Diese kann man eigentlich alle Deinstallieren sofern keine Abhängkeit zu anderen Paketen besteht.
update-alternatives --list java zeigt die installiert-/registrierten Binaries. Welchem zu deinstallierendem Debian Paket die jeweilige Binary gehört, kann mit „dpkg -S“ rausgefunden werden.

Hier ein Beispiel:

user@host:~$ update-alternatives --list java
/usr/lib/jvm/jdk-7-oracle-x64/jre/bin/java
user@host:~$ dpkg -S /usr/lib/jvm/jdk-7-oracle-x64/jre/bin/java
oracle-java7-jdk: /usr/lib/jvm/jdk-7-oracle-x64/jre/bin/java

Ergebnis: oracle-java7-jdk wäre nun ein Ergebnis – aber das ist in diesem Fall auch gut so! 😉

Freetz Trunk lässt sich nicht auf Debian Testing compilen

Problem:
Ich wollte mal wieder mein Freetz-Image aktualisieren, also ab in die Sources und ein „svn update“ durchgeführt – soweit sogut. Im Anschluss führe ich make clean aus und folgende Meldung erscheint.

boss@devil:/opt/freetz-box/freetz-devel$ make clean
ERROR: The header file sys/acl.h was not found in /usr/(local/)include.
ERROR: The header file sys/capability.h was not found in /usr/(local/)include.
Makefile:133: *** Some build prerequisites are missing! Please install the missing packages before trying again. Schluss.

Lösung:
Ich habe apt-file nach den fehlenden Dateien befragt und dadurch die Lösung erhalten. Es muss die Installation der folgenden Pakete durchgeführt werden, im Anschluss funktioniert der Freetz-Buildtree wieder wie gewohnt!

apt-get install libacl1-dev libcap-dev

Happy Freetzing!

Wann und wieso die Dateien nicht mehr vorhanden waren, habe ich nicht weiter untersucht. Geht ja wieder alles ^^

snmpd – Basis Einrichtung unter Linux

Problem:
Ich möchte per SNMP einige Geräte mit Cacti überwachen.

Lösung:
Ich installiere snmpd und konfiguriere spartanisch
apt-get install snmpd
vi /etc/snmp/snmpd.conf

Meine modifizierten Variablen wie folgt:
agentAddress udp:161
view systemonly included .1.3.6.1.2.1
sysLocation Sitting on the Dock of the Bay
sysContact Me

Zuletzt den Dienst nochmal durchstarten, fertig!
/etc/init.d/snmpd restart

Der String .1.3.6.1.2.1 ist in der RFC1213-MIB spezifiziert und wird in einem O’relly Dokument recht gut erklärt wie ich finde.

Dazu gibt es im Debian Zweig noch ein MIB-Downloader Paket welches ich installiere

apt-get install snmp-mibs-downloader
# damit sind die MIBs auch schon runtergeladen

Dann muss in /etc/default/snmpd noch folgende Zeile ergänzt werden:

# Don't load any MIBs by default.
# You might comment this lines once you have the MIBs downloaded.
export MIBS=UCD-SNMP-MIB

Jetzt muss nur noch der snmpd neu gestartet werden.

Nachtrag:
Der Service loggt standardmäßig doch recht viel, das kann in der Datei /etc/default/snmpd abgeändert werden.

DebugLog:
# snmpd options (use syslog, close stdin/out/err).
SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -g snmp -I -smux -p /var/run/snmpd.pid'

WarningLog:
# snmpd options (use syslog, close stdin/out/err).
SNMPDOPTS='-LS0-5d -Lf /dev/null -u snmp -g snmp -I -smux -p /var/run/snmpd.pid'

Die -L Option wird auf der Projektseite des PerlModuls näher erklärt
http://net-snmp.sourceforge.net/docs/man/snmpcmd.html

Nachtrag:
Netzwerk-Verbindungsüberwachung, zB für klassisches DSL oder PPTP VPN funktioniert nur solange die Verbindung besteht. Wird diese getrennt, dann kann snmpd nichts mehr liefern – Auch wenn die Verbindung wieder hergestellt ist!!
Abhilfe schafft hier ein einfaches, ausführbares (chmod 755) Script /etc/ppp/ip-up.d/snmpd-restart.sh

#!/bin/sh
/etc/init.d/snmpd restart

Damit wird bei jeder neuen, erstellten Verbindung der SNMP Dienst neu gestartet. Quick & Dirty

gnome-shell nach Absturz wieder beleben unter Debian

Problem:
Ich habe in der Mittagspause meinen Rechner gesperrt, natürlich waren viele Dokumente offen und nicht gespeichert. Als ich Ihn wieder entsperren will, reagiert die Gnome-Shell nicht mehr.
Wie kann ich jetzt Datenverlust vermeiden?

Lösung:
Die hängende Obrfläche befindet sich auf tty7. Ich wechsle also zuerst in eine andere Konsole und melde mich dort an.
Nach der Anmeldung muss geprüft werden, ob der Prozess „gnome-shell“ noch existiert.
Sollte der Prozess NICHT mehr existieren, dann sollte man diesen Beitrag erst komplett durchlesen 😉

user@workstation:~$ ps uax | grep gnome-shell
user 7168 0.3 4.4 946116 174620 ? Rl Jul05 27:32 /usr/bin/gnome-shell

Dieser Prozess muss nun also ersetzt werden. Wie geht man vor?
Zuerst muss man rausfinden, auf welchem Display der aktive Xorg Server läuft

user@workstation:~$ ps uax | grep Xorg
root 5534 0.3 1.2 160088 49264 tty7 Rs+ Jul05 28:20 /usr/bin/Xorg :0 -br -verbose -novtswitch -auth /var/run/gdm3/auth-for-Debian-gdm-htekEo/database -nolisten tcp vt7

Der Server läuft auf dem Display „:0“
Die Display Variable muss auf der Konsole exportiert werden, ich prüfe auch gleich auf die Existenz der Variablen

user@workstation:~$ export DISPLAY=:0
user@workstation:~$ env | grep DISPLAY
DISPLAY=:0

Jetzt sind die Vorraussetzungen geschaffen, um die Oberfläche zu ersetzen.
Nun ersetze ich die kaputte Oberfläche auf tty7

user@workstation:~$ gnome-shell --replace &

Sollte oben festgestellt worden sein, dass der Prozess komplett fehlt, muss der Befehl wie folgt lauten

user@workstation:~$ gnome-shell &

Gutes Gelingen! – ansonsten kann man nur noch den Desktopmanager neu starten was jedoch Datenverlust bedeutet!

X11 Forwarding unter SSH nach Userwechsel mit su unter Linux

Problem:
Ich habe meinen SSH Server auf X11 Forwarding getrimmt und das funktioniert auch alles super. root Login wurde per Config unterbunden.
Nun muss ich aber als root eine X11 Applikation ausführen – wie geht das nun? Nach dem Benutzerwechsel bekomme ich immer folgende Meldung

X11 connection rejected because of wrong authentication.

Lösung:
Ich melde mich wie gewohnt an meinem Server mit aktivem X11 Forwarding an

ssh user@server -X

In meinem Home wurde, sofern nicht schon vorhanden, eine „.Xauthority“ Datei angelegt. Diese kann natürlich nur von meinem User gelesen und beschrieben werden.
Will ich nun als User „root“ eine X11 Applikation ausführen, muss eine solche Datei auch im $HOME des jeweiligen Users liegen. Für den User root geht das konkret wie folgt. Ich wechsle via „su root“ und befinde mich noch im $HOME meines Users. Nun kopier ich die .Xauthority einfach in mein Home.

ssh max@server -X # erstellte .Xauthority gilt nur für User max
su root #Userwechsel zu root
cp .Xauthority ~ #kopieren der .Xauthority von /home/max nach ~

Und schon kann auch root X11 Applikationen via ssh starten!

PDF komprimieren unter Linux

Problem:
Ich habe einige Dokumente in hoher Auflösung als PDF vorliegen und möchte diese für den Rechner optimiert abspeichern.

Lösung:
Ghostscript erledigt diesen Job. Ich wechsle mit dem Terminal in den entsprechenden Ordner und führe nun (für mich passend) folgenden (Quick & Dirty) Befehl aus:


find ./ -name '*.pdf' -exec gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dNOPAUSE -dQUIET -dBATCH -sOutputFile={}-mail.pdf {} ;

Erklärung:
„find“ sucht alle PDFs rekursiv im Verzeichnis und „gs“ komprimiert die Dateien entsprechend dem Muster unter Option „-sOutoutFile“. Ich lasse hier die Endung „-mail.pdf“ anhängen.
Resultat wäre hier: dokument.pdf-mail.pdf