Kategorien
Linux

rsync-Backup – jene Daten finden die gesichert wurden

Wer mit rsync und hardlinks Sicherungen erstellt hat eventuell das Problem dass er wissen möchte welche Daten sich zwischen zwei Sicherungen verändert haben, nicht jedes rsync-Backup Script protokolliert das bzw. verliert man bei 30 oder mehr Backups schon mal den Überblick.

Bei meiner Sicherung werden die einzelnen Sicherungen in Verzeichnissen mit der Bezeichnung daily.0 bis daily.30 gespeichert. In jedem Verzeichnis findet sich der Stand vom entsprechenden Tag von der letzten Sicherung die x-Tage zurückgerechnet.

Möchte man also wissen welche Datei gesichert wurde muss man jene finden die nur einen Hardlink besitzt, alle anderen wurden von einem der Vortage übernommen!

Hier hilft uns folgender Befehl:

find daily.2 -type f -links 1

Das „-links 1“ findet nur jene Dateien die einen einzigen Hardlink besitzen – ein Hardlink ist bei dieser Form der Sicherung das Minimum weil daily.0 und daily.1 ident sind und somit immer mindestens ein Link zum vorherigen Verzeichnis besteht.

 

Kategorien
Linux

Samba Freigabe mit Papierkorb versehen

Out of the box kommt Samba ohne irgendwelche Papierkorb-Funktion daher, eine gelöschte Datei landet also im Nirvana und kann maximal aus einem Backup zurück geholt werden.

Das kann zu Problemen führen wenn die User gewohnt sind auf gelöschte Dateien über den Papierkorb zugreifen zu können, bei Windows Servern und deren Freigaben ist das der Standard.

Samba fehlt diese Funktion allerdings nicht, sie ist nur per Default nicht aktiviert bzw. kann für jede Freigabe extra aktiviert werden.

Die Funktion für eine Freigabe nachzurüsten ist sehr einfach, hier die Schritte die es dafür benötigt:

  • Anlegen eines Papierkorb Verzeichnisses

mkdir /srv/samba/freigabe/.recycle
chmod 1770 /srv/samba/freigabe/.recycle

Die Zugriffsrechte 1777 verwende ich weil auf der Freigabe nur der Besitzer und root die Datei aus dem Papierkorb löschen sollen.

Durch den vorangstellten Punkt wird das Verzeichnis im Windows als verstecktes Verzeichnis behandelt und ist nicht für Jedermann sichtbar.

  • In der smb.conf die Einstellungen bei der Freigabe vornehmen

[freigabe]
comment = eine Freigabe zum Testen
path = /srv/samba/freigabe
writable = yes
create mask = 0770
directory mask = 0770
force user = smbusers
vfs object = recycle
recycle:repository = .recycle
recycle:keeptree = Yes
recycle:touch = Yes
recycle:versions = Yes
recycle:maxsize = 0

Die Bedeutung der vfs object Parameter sind wie folgt:

recycle:repository = .recycle

Der relative Pfad zum Papierkorb innerhalb der Freigabe.

recycle:touch = Yes

Setzt die Uhrzeit der gelöschten Datei auf den Löschzeitpunkt – sehr wichtig wenn man alle Dateien älter als x-Trage automatisch per Cron Job löschen möchte!

recycle:keeptree = Yes

Behält die Ordnerstruktur im Papierkorb bei.

recycle:versions = Yes

Dateien mit dem gleichen Namen überschreiben sich nicht im Papierkorb, die zweite Datei bekommt den Namen „Copy #1 of…“

recycle:maxsize = 0

0 bedeutet hier dass alle Dateien im Papierkorb landen, gibt man hier eine Größe an landen alle Dateien ab der Größe im Nirvana und nur kleinere Dateien werden in den Papierkorb verschoben.

Das Ganze lässt sich dann noch mit „vfs object = full_audit recycle“ kombinieren und schon sieht man im Samba Logfile wer welche Dateien gelöscht hat. Erzeugt zwar jede Menge Daten im Syslog – wer aber regelmässig damit zu kämpfen hat dass Dateien „einfach verschwinden“ der findet hier schnell den Übeltäter! 😉

Damit der Papierkorb sich nicht unendlich füllt habe ich noch eine Cron Job eingebaut der täglich um 23:00 Uhr alle Dateie älter als 30 Tage aus dem Papierkorb entfernt.

In der Datei /etc/crontab einfach folgende Zeile einfügen:

0 23 * * * root find /srv/samba/freigabe/.recyclebin -atime +30 -exec rm -rf {} \;

Und schon verliert das Löschen auf Netzwerklaufwerken mit Samba Servern seinen Schrecken! 🙂

Kategorien
Linux

Ubuntu 16.04 – A start job is running for Unattended Upgrades Shutdown

Ubuntu richtet eine Dienst für unattended upgrades ein, genau dieser Dienst macht gelegentlich beim Herunterfahren des Systems Probleme.

Meine Geduld hat bisher nicht ausgereicht um so lange zu warten bis irgend etwas passiert, gefühlt dauert es eine Ewigkeit – die zwei Worte „no limit) am Ende der Meldung deuten auch wirklich darauf hin.

Gut möglich dass das Problem generell nur dann auftritt wenn das System frisch gestartet worden ist und man gleich oder nach kurzer Zeit einen Neustart einleitet.

Da ich alle Sicherheitsupdates zeitnahe selbst installiere und diese verantwortungsvolle und gelegentlich auch fehlerbehaftete Aufgabe nicht einem Dienst überlassen möchte, stört mich der Dienst mehr als er Nutzen bringt. Während der Installation des Systems habe ich übrigens die automatische Installation von Updates abgelehnt – da sind sie trotzdem auch wenn sie nichts automatisch installieren.

Um die Fehlermeldung zu eliminieren kann man den Dienst einfach nicht mehr starten:

update-rc.d -f unattended-upgrades remove

Wer vor dem reboot den Dienst beendet

systemctl stop unattended-upgrades

spart sich die Warterei und bekommt nach kurzer Wartezeit sein System ohne den Dienst gestartet – ein erneuter reboot läuft dann ohne lange Wartezeit!

Speziell bei der Fernwartung von Systemen die hunderte Kilometer entfernt stehen ist das eine echte Hilfe! 🙂

Kategorien
Linux

Checkliste Upgrade von Ubuntu 14.04 auf 16.04

Beim Upgrade von Ubuntu 14.04 auf 16.04 kommt es an der einen oder anderen Stelle vereinzelt zu Problemen, hier meine kurze Checkliste die mir bei meinen Upgrades sehr hilfreich war/ist.

  • Mysql: sehr alte Kennwörter erneuern, der Password Hash hat sich geändert und die alten funktionieren nicht mehr
  • Mysql: oder gleich einen Umstieg auf Maria-DB einplanen – gute Option 🙂
  • SSH: entweder neue Keys generieren (ssh-keygen -b 4096) oder den SSH Dienst so einstellen dass er alte SSH-Keys akzeptiert. Zweiteres würde ich nicht empfehlen.
  • Bind: Wer im Bind mit internen und externen Zonen gearbeitet hat, der darf hier keine mehrfach genutzten Zone-Files Einträge haben die auf die gleiche Datei verweisen. Also kopieren, umbenennen und entsprechend in der Config anpassen.
  • Squid: beim Upgrade ändern sich die Pfade für die Config files und auch jene der Logfiles. Entsprechend nach dem Upgrade prüfen und gegebenenfalls korrigieren. Weiters muss die Squid-Config von Apparmor angepasst werden, Logfile Verzeichnis anpassen und wer die Squid Daten in einem separaten Pfad abgelegt hat muss auch diesen eintragen.
  • PHP: Da Ubuntu 16.04 die PHP Version 7.0 mit bringt muss alles was noch die alte „mysql“ Funktion verwendet auf „mysqli“ umgestellt werden!

Die Liste wird bei bedarf noch erweitert! 🙂

Kategorien
Linux

Ubuntu – bindgraph – Prototype mismatch: sub Parse::Syslog::str2time

Bereits mit Ubuntu 14.04 ist dieser Fehler schon aufgetaucht und bis heute haben sie es nicht geschafft diese Kleinigkeit zu fixen – eigentlich ein Trauerspiel weil’s wirklich nur einer Kleinigkeit bedarf.

Egal, wen dieser Fehler hier plagt:

Starting DNS Statistics /usr/sbin/bindgraph.pl
Prototype mismatch: sub Parse::Syslog::str2time ($$$$$$$) vs ($$$$$$$$) at /us
Subroutine str2time redefined at /usr/share/perl5/Parse/Syslog.pm line 66.
Subroutine new redefined at /usr/share/perl5/Parse/Syslog.pm line 138.
Subroutine _next_line redefined at /usr/share/perl5/Parse/Syslog.pm line 206.
Subroutine next redefined at /usr/share/perl5/Parse/Syslog.pm line 388.
Not enough arguments for Parse::Syslog::str2time at /usr/sbin/bindgraph.pl lin
BEGIN not safe after errors–compilation aborted at /usr/sbin/bindgraph.pl lin
…fail!

Für den gibt es eine sehr einfache Abhilfe!

Einfach in der Datei /usr/sbin/bindgraph.pl folgende Einträge ändern -> Syslog zu BgSyslog.

Sehr einfach klappt das mit dem vi – vi starten und dann folgendes eingeben „:%s/Syslog/BgSyslog/g“, anschließend speichern und Dienst neu starten. Die Fehlermeldung sollte verschwunden sein und bindgraph seinen Dienst verrichten.

Kategorien
Linux

SSH auto-Login funktioniert nach Upgrade auf Ubuntu 16.04 nicht mehr

Wer sein Ubuntu System so konfiguriert hat dass er sich mit seinem Public Key automatisch anmelden kann, dem könnte es beim Upgrade auf 16.04 passieren dass dies nicht mehr funktioniert.

In /var/log/auth.log Logfile findet sich eventuell folgende Meldung:

May 4 13:12:34 e000000 sshd[8963]: userauth_pubkey: key type ssh-dss not in PubkeyAcceptedKeyTypes [preauth]

Der vorhandene Key wird also nicht akzeptiert – die korrekte Lösung wäre natürlich jetzt den Key durch einen besseren zu tauschen, die einfache und für interne Zwecke ist diese hier:

In der /etc/ssh/sshd_config Datei folgende Zeile ergänzen

PubkeyAcceptedKeyTypes +ssh-dss

Und anschließend mit „service ssh restart“ den SSH Dienst neu starten.

Schon klappt die Anmeldung wieder wie gewohnt…

Kategorien
Linux

Kiosk-System: iiyama Prolite T2252MTS mit Ubuntu 15.04 auf einem Banana Pi

iiyama_t2252mts_bananapiFür einen Info-Terminal habe ich einen Banana Pi mit iiyama Prolite T2252MTS Monitor verbaut, als Anwendung läuft auf dem System einfach nur ein Browserfenster mit einer Hersteller-Info-Webseite im Hintergrund.

Die Grundlage für dieses System bildet die Ubuntu Version von der Banana-Pi Webseite.

Auf mehrere Probleme bin ich bei der Inbetriebnahme gestoßen – der Monitor bliebt überhaupt dunkel, der Multitouch zum Zoomen und Scrollen funktionierte nicht, das Display konnte nicht um 90° gedreht werden und zu guter letzt machte nach dem Drehen der Mauszeiger noch Probleme! Die Achsen waren verdreht, eine Bewegung nach unten lies den Mauszeiger nach links wandern…

Hier nun die Einstellungen die bei mir zum Erfolg geführt haben

Damit beim Rechnerstart gleich ein User ohne Kennworteingabe angemeldet wird habe ich die Datei /etc/init/tty1.conf verändert

start on stopped rc RUNLEVEL=[2345]
stop on runlevel [!2345]

respawn
exec /bin/login -f pi < /dev/tty1 > /dev/tty1 2> /dev/tty1

Dadurch fällt mir zwar die erste Konsole weg, davon gibts aber sowieso mehrere – also nicht weiter tragisch. 🙂

Das tty1 startet also die Login Shell vom User „pi“ und darin liegt eine modifizierte .bashrc Datei an deren Ende ich nur folgene Zeile angefügt habe:

xinit
logout

Der Befehl xinit startet das X-Windows System und sollte sich der Prozess mal beenden wird automatisch ein logout ausgeführt.

Sobald das X-Windows System startet wird die Datei .xinitrc im Home Verzeichnis vom User pi ausgeführt, diese sieht wie folgt aus:

#!/bin/bash

export TERM=xterm
WINDOWMANAGER=“pekwm“

exec $WINDOWMANAGER

exit 0

Hier wird „pekwm“ als Windowmanager definiert und entsprechend gestartet.

Der Window Manager „pekwm“ legt seine Config-Dateien im Unterverzeichnis .pekwm des Users pi an, die Datei „start“ muss ausführbar gemacht werden (chmod +x start) und bei mir sieht sie wie folgt aus:

xinput –set-prop „Quanta OpticalTouchScreen“ „Evdev Axis Inversion“ 0 1
xinput –set-prop „Quanta OpticalTouchScreen“ „Evdev Axes Swap“ 1

sleep 1;/usr/bin/chromium-browser –start-maximized –kiosk –disable-about-in-settings –disable-account-consistency –disable-breakpad –disable-cloud-import –disable-drive-search-in-app-launcher –disable-extensions –disable-file-system –disable-offline-pages –disable-settings-window –disable-session-crashed-bubble &
while true; do
/usr/bin/x11vnc -display :0
done

Die ersten beiden Zeile dienen dazu den Mauszeiger umzuschalten sodass er nach dem Drehen des Bildschirms korrekt dem Finger folgt, je nachdem wie man den Bildschirm gedreht hat müssen die Werte angepasst werden.

Nach einer Pause von einer Sekunde wird dann der Chromium Browser im Kiosk Modus gestartet.

Am Ende des Scripts starte ich noch einen VNC Dienst, damit ich zu Fernwartungszwecken die Anzeige übertragen kann – das Ganze in einer Endlosschleife damit der VNC Dienst auch nach dem Beenden einer Wartung wieder aktiv wird.

Und jetzt kommen wir zur Konfigurtation des X-Servers, bei Ubuntu wird die Konfiguration aus dem Verzeichnis /usr/share/X11/xorg.conf.d geladen – entsprechend habe ich dort folgende Dateien erstellt:

01-fbturbo.conf

Section „Device“
Identifier „ProLite T2250MTS – iiyama“
Driver „fbturbo“
Option „fbdev“ „/dev/fb0“
Option „SwapbuffersWait“ „true“
Option „AccelMethod“ „G2D“
Option „rotate“ „CW“
Option „HWCursor“ „false“
EndSection

10-monitor.conf

Section „Monitor“
Identifier „Monitor0“
Modeline „1920×1080“ 148.50 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync -csync
EndSection

Section „Screen“
Identifier „Screen0“
Monitor „Monitor0“
DefaultDepth 24
Option „Rotate“ „left“
Option „RandRRotation“ „True“
SubSection „Display“
Depth 24
Modes „1920×1080“
EndSubSection
EndSection

50-multitouch.conf

Section „InputClass“
MatchIsTouchpad „true“
Identifier „Multitouch Touchpad“
Driver „multitouch“
Option „EmulateThirdButton“ „1“
Option „EmulateThirdButtonTimeout“ „750“
Option „EmulateThirdButtonThreshold“ „30“
EndSection

Eine Kleinigkeit gibts dann noch zu beachten, auf meinem System wurde der USB Touch vom Monitor erst sehr spät nach dem Booten erkannt – daher musste ich eine udev-Regel mit einbauen welche ein Script ausführt das die xinput Werte setzt!

/etc/udev/rules.d/10-local.rules

SUBSYSTEM==“input“, ACTION==“add“, KERNEL==“mouse0″, RUN+=“/usr/local/sbin/rotate_touch.sh“

Und hier der Inhalt des /usr/local/sbin/rotate_touch.sh Scripts:

#!/bin/sh
sleep 1
logger -t „touch“ „Versuche touch zu rotieren…“
export DISPLAY=:0
xinput –set-prop „Quanta OpticalTouchScreen“ „Evdev Axis Inversion“ 0 1
xinput –set-prop „Quanta OpticalTouchScreen“ „Evdev Axes Swap“ 1

Mit diesen Einstellungen läuft das System bei mir einwandfrei! Ein günstiges Kiosk System mit Multitouch – die Hardware kostet keine 300 Euro.

Viel Spaß beim Nachbasteln!

Kategorien
Linux

Ubuntu 14.04 – Paket irqbalance 1.0.6-2 Fehler beim Upgrade

irqbalance_1.0.6-2_update-error-fixedBeim Installieren der aktuellen Updates für irqbalance 1.0.6-2 bekommt man eine Fehlermeldung, dass das Post-Install-Script nicht korrekt abgelaufen ist und die Installation bricht ab.

Startet man die Installation manuell via „dpkg“ mit dem Parameter „-D65535“ bekommt man jede Menge Debug Informationen und ziemlich am Ende der langen Liste auch die Ursache präsentiert!

D000020: deferred_configure ‚/etc/init/irqbalance.conf‘ (= ‚/etc/init/irqbalance.conf‘) useredited=-1 distedited=-1 what=2
start: Job is already running: irqbalance
invoke-rc.d: initscript irqbalance, action „start“ failed.
dpkg: Fehler beim Bearbeiten des Paketes irqbalance (–install):
Unterprozess installiertes post-installation-Skript gab den Fehlerwert 1 zurück
D020000: post_script_tasks – ensure_diversions

Laut der Fehlermeldung konnte das Startscript nicht richtig ausgeführt werden weil bereits ein irqbalance Dienst läuft!

Für das Problem gibt es also eine ganz einfach Lösung – vor dem Start des Updates einfach den irqbalance Dienst stoppen.

service irqbalance stop

Und schon klappt es mit der Installation des Updates.

Kategorien
Linux

Fujitsu RX1330 – Ubuntu Kernel Upgrade auf Kernel 3.16.0-48 und Netzwerkprobleme

Nach dem letzten Ubuntu Kernel Update auf Version 3.16.0-48 habe ich probleme bei einem Fujitsu RX1330 mit den Netzwerkadaptern gehabt!

12.09.2015 Update: Es betrifft auch Primergy RX100 S7 Server – ich vermute fast dass das Problem eher mit dem e1000e Treiber oder der Intel Netzwerkkarte zusammenhängt (Intel Corporation 82579LM Gigabit Network Connection)!

Vernünftiges Arbeiten am Netzwerk war leider nicht mehr möglich – im /var/log/syslog Logfile fanden sich folgende Meldungen:

Sep 7 07:27:00 server kernel: [ 4715.488063] igb 0000:04:00.0: Detected Tx Unit Hang
Sep 7 07:27:00 server kernel: [ 4715.488063] Tx Queue <3>
Sep 7 07:27:00 server kernel: [ 4715.488063] TDH <80>
Sep 7 07:27:00 server kernel: [ 4715.488063] TDT <80>
Sep 7 07:27:00 server kernel: [ 4715.488063] next_to_use <82>
Sep 7 07:27:00 server kernel: [ 4715.488063] next_to_clean <80>
Sep 7 07:27:00 server kernel: [ 4715.488063] buffer_info[next_to_clean]
Sep 7 07:27:00 server kernel: [ 4715.488063] time_stamp <10010d661>
Sep 7 07:27:00 server kernel: [ 4715.488063] next_to_watch <ffff88003681f810>
Sep 7 07:27:00 server kernel: [ 4715.488063] jiffies <10010d944>
Sep 7 07:27:00 server kernel: [ 4715.488063] desc.status <33c200>

Da der Fehler unmittelbar nach dem Neustart mit dem neuen Kernel auftauchte, war natürlich der Rückschluss auf das Update naheliegend. Statt dem Weg zurück zum älteren Kernel habe ich die Flucht nach vorne gewagt! 🙂

apt-get install –install-recommends linux-generic-lts-vivid linux-headers-generic-lts-vivid linux-image-generic-lts-vivid

Nach einem erneuten Neustart läuft das System jetzt mit dem Kernel 3.19.0-26 wieder stabil!

Kategorien
Linux

Fehler beim Upgrade von Squidguard bei Ubuntu 14.04

Bin gerade in den Bug hier rein gerauscht:

https://bugs.launchpad.net/ubuntu/+source/squidguard/+bug/1313200

Wie in der Bugmeldung beschrieben liegt das Problem daran dass der squidguard in Version 1.5-2 versucht am Ende den Proxy Squid neu zu starten, was mangels /etc/init.d/squid3 Script aber scheitert.

Was liegt also näher als das Problem zu beheben indem man einfach dieses Script erstellt? – nichts! 🙂

#!/bin/bash

exit 0

Mehr muss da nicht drinnen stehen – Hauptsache das Script liefert ein „0“ als Fehlercode retour und somit ein OK. Mit „chmod 0700 /etc/init.d/squid3“ noch ausführbar gemacht und schon klappt das Update vom squidguard ohne Probleme!

Es gibt wie’s scheint schon ein Paket mit Bugfix 1.5-3 allerdings nicht in den Update Repositories vom 14.04, das kann sich natürlich jederzeit ändern…