Kurztipp: calibre-web zur ebook Verwaltung

Calibre-web ist eine Software um seine Ebooks via Webinterface zu verwalten. Als Grundlage dient dabei die bereits vorhandene Calibre Datenbank. Vor einiger Zeit hatte ich kurz etwas zu bicbucstriim und cops geschrieben. Wobei beide Projekte gut sind aber noch viel Luft nach oben lassen. Ein fehlendes Feature ist z. B. das Erstellen von eigenen Buchsammlungen, was beide Projekte nicht können. Bei calibre-web können Benutzer solche Buchsammlungen anlegen und verwalten. Zu dem hat man auch die Möglichkeit Metadaten im Webinterface zu verändern. Es empfiehlt sich calibre-web hinter einem reverse proxy wie nginx oder Apache laufen zu lassen, Beispiele dazu finden sich auf der Projektseite. Die Suche und generelle Performance ist bei cops deutlich besser, aber die Sache mit den eigenen Buchsammlungen ist ein fast unschlagbarer Pluspunkt für calibre-web. Man kann natürlich auch problemlos cops, calibre-web und bicbucstriim parallel laufen lassen.

Mirko Lindner hat zu calibre-web einen guten Artikel auf pro-linux geschrieben.

 

Kurztipp: MySQL 5.7 Ubuntu 16.04 und max connections werden nicht übernommen

Steht im error.log von MySQL 5.7 etwas in der Art wie:

2018-02-02T13:30:24.539046Z 0 [Warning] Changed limits: max_open_files: 1024 (requested 5000)
2018-02-02T13:30:24.539087Z 0 [Warning] Changed limits: max_connections: 214 (requested 800)
2018-02-02T13:30:24.539091Z 0 [Warning] Changed limits: table_open_cache: 400 (requested 1024)

auch diverse Einträge mit „Too many open files“ sind ein Hinweis,

hilft (vielleicht) folgendes

systemctl edit mysql

eintragen:

[Service]
LimitNOFILE=8000

Dadurch wurde nun die Datei /etc/systemd/system/mysql.service.d/override.conf angelegt

systemctl daemon-reload
systemctl restart mysql

Nun sollten die Werte aus der mysqld.conf übernommen werden.

Eventuell nochmal mit

mysql> show variables like '%connections%';

usw. prüfen.

Warum weshalb wieso findet man unter:

https://dev.mysql.com/doc/refman/5.7/en/using-systemd.html

https://stackoverflow.com/questions/39976756/the-max-connections-in-mysql-5-7

https://stackoverflow.com/questions/32760202/buffered-warning-changed-limits-max-connections-214-requested-800/33464069

Hinweis: Kernel Panic – Debian 8.10 und Kernelupdate

Wer wie ich Hardware (VMs  sind je nach Konfiguration auch betroffen, siehe Link) mit mehreren Sockets benutzt wird eventuell in diesen Bug gelaufen sein:

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=883938

Im Bugreport stehen ein paar Workarounds (Kernelparam: maxcpus=1, nosmp oder numa=off), damit die Maschine wenigstens wieder bootet. Falls noch nicht geupdatet wurde am besten den momentanen Kernel pinnen oder einfach auf ein Update warten.

Apache mit unterschiedlichen Benutzerrechten

Bei Debian Derivaten läuft der Apache in der Regel mit www-data Benutzerrechten. Will man aber, dass der Apache unter verschiedenen Benutzern läuft wird es schon schwieriger. Da gibt es Lösungen wie zum Beispiel  mod_fcgid, PHP-FPM oder mpm-itk. Besonders das itk Modul fand ich im Vergleich zu PHP-FPM, sehr einfach zu konfigurieren. Getestet mit Debian 8 und Ubuntu 14.04.
Ein kleiness Beispiel:

apt-get install libapache2-mpm-itk

und in der jeweiligen Vhost Konfiguration trägt man folgendes ein:

<IfModule mpm_itk_module>
AssignUserId henry www-data
</IfModule>

Wobei henry der Benutzer und www-data die Gruppe ist.

Will man testen ob alles funktioniert, kann man einfach folgendes Skript ausprobieren:

<?php
$processUser = posix_getpwuid(posix_geteuid());
print $processUser['name'];
?>

Da sollte dann bei meinem Beispiel „henry“ angezeigt werden. Ansonsten einfach mal eine Datei via Webinterface hochladen und schauen wem Sie gehört.

Wichtig dabei ist, dass die jeweiligen Benutzer und Gruppen existieren müssen. Existiert z .B. kein henry oder keine Gruppe www-data, startet auch der Apache nicht. Bedeutet auch, falls man mit einer LDAP Benutzerverwaltung arbeitet und der LDAP läuft nicht stabil, sollte man die Benutzer aus dem LDAP auf den jeweiligen Webserver syncen. Auf der MPM ITK Seite findet man noch diverse andere Parameter wie z.B. MaxClientsVHost, AssignUserIDExpr, LimitUIDRange usw.

Die Anpassungen am System sind minimal, daher kann man das ITK Modul ohne großen Aufwand testen. Hat man sehr viele Vhost und arbeitet nicht mit Puppet&Co kann man auch  mit Apache Macros arbeiten, dann würde der Eintrag in etwa so aussehen:

in der vhost.conf:

Use itkmodul henry www-data

in der jeweiligen macro.conf

<Macro itkmodul $username $group>
<IfModule mpm_itk_module>
AssignUserID $username $group
</IfModule>
</Macro> 

Inwieweit das ITK Modul zusätzliche Sicherheitsprobleme mit sich bringen kann, hängt vom jeweiligen System ab und wie es konfiguriert ist. Da kann man sicherlich schnell etwas konstruieren.

Update: Anscheinend funktioniert das Modul nur für userids < 65535. (link). Eventuell besteht das Problem bei Ubuntu 16.04 nicht mehr (Test folgt).

Kurztipp: Tab Completion funktioniert nicht bei vnc+xfce

Ich nutze aus diversen Gründen ab und an XFCE in einer VNC Session unter Debian 8. Dabei fehlte mir aber die Tab Completion, was extrem nervig sein kann. Die Lösung für mein Problem war:

in der

~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml

folgendes editieren

<property name="&lt;Super&gt;Tab" type="string" value="switch_window_key"/>

wird zu

<property name="&lt;Super&gt;Tab" type="empty"/>

danach die VNC Session killen und neu starten.

Kein häufiges Problem nehme ich mal an ;-).

Kurztipp: Nextcloud for Filelink

Ein tolles Plugin für Thunderbird um größere Dateien nicht via email verschicken zu müssen, sondern direkt über Nextcloud bereitzustellen zu können. Funktioniert auf den ersten Blick relativ problemlos. Man kann leider nicht pro mail ein neues Passwort definieren, ansonsten aber eine feine Sache.

https://addons.mozilla.org/de/thunderbird/addon/nextcloud-filelink/

Gibt es auch für Outlook. Kann ich aber  mangels Outlook nicht testen.

 

Kurztipp: syncen mit lsyncd

Lsyncd hatte ich mir schon mal vor Jahren angeschaut. Damals wurde aber ssh als Transport noch nicht unterstützt.  Nun habe ich mir das nochmal kurz (wirklich kurz) unter Debian 8 angeschaut (Version 2.1.5). Lsyncd überwacht Verzeichnisse via inotify und überträgt alle geänderten Dateien automatisch auf die angegebenen Zielhosts.  Lsyncd bietet eine große Anzahl an Optionen, daher schadet ein Blick auf die Homepage nicht. Zum schnellen testen kann man einfach folgendes ausprobieren:

apt install lsyncd

Auf der Konsole:

lsyncd -rsyncssh /home/thomas/hallo zielhost /home/thomas/test

Dabei wird der Inhalt des Ordners hallo in den Zielordner test Übertragen. Default werden Änderungen alle 15 Sekunden übertragen. Der Zielordner wird dabei automatisch angelegt.

Konfigurationsdateien lassen sich auch „problemlos“ nutzen, z.B.:

$ cat /etc/lsyncd/lsyncd.conf.lua                                                                       
settings  {
        logfile = "/var/log/lsyncd/lsyncd.log",
                statusFile = "/var/log/lsyncd/lsyncd.status"
                }

sync {
        default.rsyncssh,
        source = "/home/thomas/hallo",
        host = "thomas@zielhost",
        targetdir = "/home/thomas/test",
      }

und mit

service lsyncd start

den daemon starten. Danach eventuell noch ein

update-rc.d lsyncd defaults

für den Autostart des daemons.

Dabei muss auf dem Zielhost ssh login ohne Passwort erlaubt sein. Man kann aber auch rsyncd zur Übertragung nutzen. Zu beachten ist das lsyncd default „delete“ als Option hat. Das merkst Du daran, dass plötzlich vielleicht Dein gesamtes home directory gelöscht wurde…nicht das es mir passiert wäre. Die Syntax im Bezug auf „/“ bei Verzeichnissen ist anders als bei rsync.

Lsyncd ist eventuell  interessant wenn man einfach nur ein paar Konfigurationen, ohne Puppet & Co zu nutzen, syncen will oder  man eine überschaubare Menge an Dateien auf verschiedenen hosts verteilen will. Ab einer gewissen Anzahl von Dateien stößt man an auf diverse Probleme (inotify&co). Am besten man testet lsyncd auf Testmaschinen bevor man es produktiv einsetzt.

Kurztipp: Proxy Einstellungen für den Chrome Browser unter Fluxbox ändern

Klingt eigentlich ganz leicht, ist aber aber tatsächlich umständlich einzurichten. Ich nutze Fluxbox bei einigen Maschinen als Windowmanager. Dort die Proxy Einstellungen für den Chrome Browser zu ändern ist etwas nervig, da man dies nicht einfach über die Einstellungen des Browsers machen kann. Der geringste Aufwand ist einfach ein Proxy Addon zu installieren. Also einfach Proxy SwitchyOmega installieren, die Proxydaten eintragen und den Proxy auswählen.
Sollte man mit ssh Forward arbeiten, nicht vergessen socks5 statt http als Protokoll zu wählen.

Kurztipp: tmux Session beim login starten bzw. attachen

Um beim Login via ssh sofort in einer tmux Session zu landen habe ich folgendes in meine .bashrc auf dem Zielhost eingefügt:

case $- in
    *i*)
    if command -v tmux>/dev/null; then
        if [[ ! $TERM =~ screen ]] && [[ -z $TMUX ]]; then
          if tmux ls 2> /dev/null | grep -q -v attached; then
            exec tmux attach -t $(tmux ls 2> /dev/null | grep -v attached | head -1 | cut -d : -f 1)
          else
            exec tmux
          fi
        fi
    fi
    ;;
esac

Sehr praktisch falls die Verbindung nicht stabil oder die bash_history deaktiviert ist.

Man kann auch

ssh 123.123.123.123 -t tmux a

nutzen, falls eine tmux Session vorhanden ist bzw. „tmux“ falls keine.
Die .bashrc Lösung ist aber natürlich etwas eleganter.

Link:  https://stackoverflow.com/a/42351698

 

Notiz: Calibre 3.0 ist veröffentlicht

Jeder der sich irgendwie für ebooks interessiert kommt eigentlich nicht an Calibre vorbei. Die Software ist mittlerweile in der der 3.0er Version erschienen. Der „Content server“ ist deutlich performanter und bietet nun endlich auch eine Funktion zum online lesen an.
Bisher, dank Cops und Bicbucstriim, zwar von mir kaum genutzt, aber dennoch eine sehr praktische Funktion. Dabei hat Cops, dank des integrierten Readers, aber die Nase vorn.

Kurztipp: PHP Shells mit maldet finden

Maldet ist ein Malware Scanner. Ideal für jegliche Art von Webhosting.

Maldet legt automatisch einen cronjob an und verschickt je nach Wunsch täglich mails.

Mails sehen dann in etwa so aus:

HOST:      web01
SCAN ID:   170610-0654.14910
STARTED:   Jun 10 2017 06:54:15 +0200
COMPLETED: Jun 10 2017 07:07:34 +0200
ELAPSED:   799s [find: 450s]

PATH:          
RANGE:         1 days
TOTAL FILES:   24202
TOTAL HITS:    2
TOTAL CLEANED: 0

WARNING: Automatic quarantine is currently disabled, detected threats are still accessible to users!
To enable, set quarantine_hits=1 and/or to quarantine hits from this scan run:
/usr/local/sbin/maldet -q 170610-0654.14910

FILE HIT LIST:
{HEX}php.cmdshell.unclassed.365 : /pfad/zum/docroot/phpshells/844-4873-1-SM.phtml
{HEX}gzbase64.inject.unclassed.15 : /pfad/zum/docroot2/c.php

Maldet bietet etliche Einstellungsmöglichkeiten.  Man kann es auch in Echtzeit im monitoring mode laufen lassen. Je nach Umfang der docroots stößt man dabei aber an diverse Limits (ulimit &co).

Auf Github findet man Maldet unter https://github.com/rfxn/linux-malware-detect. Debian Pakete gibt es unter https://github.com/waja/maldetect.