Ein Prozess blockiert das Aushängen eines Datenträger (II) – fuser

Symbolisiertes Terminal

Im ersten Teil wurden Prozesse identifiziert die das Aushängen eines Datenträgers verhindern aber wir haben immer noch keinen Zustand in dem ein Datenträger ausgehängt werden kann. Natürlich kann man ein z.B. evtl. offenes Office-Dokument abspeichern und das Officeprogramm beenden und das empfiehlt sich auch wenn man keinen Datenverlust riskieren möchte. Aber man kann auch die Prozesse hart beenden wenn kein Datenverlust droht. So ein Beispiel wäre z.B. wenn xpdf das Aushängen verhindert.:

# lsof +f -- /media/max/4335-1CEA/
lsof: WARNING: can't stat() fuse.portal file system /run/user/1000/doc
Output information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
xpdf.real 23765 max cwd DIR 8,32 16384 12180 /media/max/4335-1CEA/Download
xpdf.real 23765 max 4r REG 8,32 3262888 12533 /media/max/4335-1CEA/Download/FujiFilm F20 Bedienungsanleitung

Hier ist eine PDF-Datei von xpdf geöffnet.

Ein verwandter Befehl zu lsof ist fuser. fuser kann Prozesse identifizieren die Dateien, Verzeichnisse und Sockets verwenden. Ein einfacher Aufruf würde z.B. zu so einer Ausgabe führen:

# fuser /media/max/4335-1CEA/
/media/max/4335-1CEA: 13159c 24928c 24943c

Weiterlesen

Ein Prozess blockiert das Aushängen eines Datenträger (I) – lsof

Symbolisiertes Terminal

Viele kennen das Problem, gerade bei USB-Speichergeräten, dass ein Programm oder Prozess das Aushängen eines Datenträgers verhindert denn nur ein Gerät was nicht in Benutzung ist kann auch ausgehängt werden. Dabei ist egal ob ein Dokument oder Datei offen ist oder ob man wie im anschließenden Fall nur das Verzeichnis in das es eingehängt wurde offen hat:

# umount /dev/sdb
umount: /media/max/4335-1CEA: target is busy.

Wie ermittelt man nun den Übeltäter? Dabei können wir umständlich alle offenen Programme durchgehen oder als elegantere Variante den Befehl lsof nutzten. Wie bei allen ls-Befehlen wie lsusb, lspci oder ls steht „ls“ für list und das of steht für „open file“.

Der einfachste Aufruf wäre lsof <Gerätedatei>:

# lsof /dev/sdb
lsof: WARNING: can't stat() fuse.portal file system /run/user/1000/doc
Output information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 2157 max cwd DIR 8,16 16384 1 /media/max/4335-1CEA
bash 13159 root cwd DIR 8,16 16384 1 /media/max/4335-1CEA
lsof 14979 root cwd DIR 8,16 16384 1 /media/max/4335-1CEA
lsof 14980 root cwd DIR 8,16 16384 1 /media/max/4335-1CEA

Weiterlesen

Filterlisten als Futter für den Pihole

Schild Zugang für Unbefugte verboten

Der Pihole kommt nur mit einer rudimentären URL-Liste von zu blockenden URLs daher aber die Wirksamkeit steht und fällt mit einer guten Auswahl an Filterlisten. Dabei sollen nach Möglichkeit alle bösen Domains geblockt werden aber falsche weitgehend korrekt wieder gegeben werden. Naturgemäß sind die Ansichten welche Domains „böse“ sind bei jedem anders. Es gibt eine Reihe von gepflegten Listen für den Pihole von Sempervideo auf GitHub. Im Folgenden sind meine Filterlisten aufgeführt:

Weiterlesen

vi und vim – eine Kommandoreferenz

Logo von vim

Unter Unix und unixoiden Betriebssystemen, zu denen auch Linux gehört, ist es oftmals nötig Textdateien zu editieren denn die Konfigurationsdateien z.B. sind, im Gegensatz zu Windows, meistens einfache Textdateien im ASCII-Format. Daher gibt es unter diesen Betriebssystemen einen ganzen Zoo an Editoren. Einer der meist genutzten Editoren ist vi bzw. seine Erweiterung vim. Der Grund ist das vi ein Editor für die Konsole ist und damit auch zu gebrauchen ist wenn die grafische Oberfläche nicht starten will aber auch seine sehr mächtigen Werkzeuge. Ein weiterer Grund ist, dass vi auf jedem POSIX-System installiert ist was in Rettungssituationen einfach notwendig ist den Editor bedienen zu können.

vi ist ein recht alter Editor der entwickelt wurde bevor es grafische Oberflächen gab und kann daher komplett mit der Tastatur bedient werden. Für Neulinge ist etwas ungewohnt, dass vi verschiedene Modi kennt. Auf vielen Linux-Distributionen ist vi ein symbolischer Link auf vim, also den verbesserten vi-Editor (vim steht für vi-improved), und es wird daher beim Aufruf von vi in Wirklichkeit vim gestartet.

Weiterlesen

Einen Rasperry Pi mit Pi-hole für DNS-Over-HTTPS konfigurieren

Bild eines Raspberry Pi III

DNS ist einer der wenigen Dienste für die es lange keine verschlüsselte Variante gab. DNS ist jedoch ein zentraler Dienst im Internet und für datensammelnde Firmen von großen Interesse. Google stellt wahrscheinlich mit 88.88.88.88 und 88.88.44.44 nicht umsonst einen öffentlichen DNS-Server zur Verfügung. Aus DNS-Anfrage und IP-Adresse, die immer übertragen werden, lassen sich prima virtuelle Bewegungsprofile erstellen. Das Internet wurde seinerzeit nicht in Hinblick auf Sicherheit entworfen sondern auf Funktionalität. Heute ist das Internet, im Gegensatz zu damals, ein Tummelplatz von Datenkraken, Werbetreibende und anderen geworden die daran interessiert sind möglichst viel über die meist ahnungslosen Benutzer heraus zu bekommen um sie mit mehr oder minder unerwünschter Werbung zu beglücken. Heute sind viele Seiten, z.B. die Seiten für Online-Banking aber auch die meisten anderen – wie diese hier auch – per SSL/TLS verschlüsselt. Das heißt der Inhalt des Abrufes ist nicht mehr so ohne weiteres einsehbar. Der DNS-Aufruf, d.h. wenn man in seinen Browser in der Adresszeile „www.example.com“ eingibt und das dann direkt in eine IP-Adresse aufgelöst wird, ist unverschlüsselt und für den Internetprovider sowohl mitlesbar als auch fälschbar. So liefern manche Internetprovider, die deutsche Telekom zum Beispiel, eine ihrer Seiten aus in der sie ihre Werbung platzieren wenn man einen Tippfehler in der Adresszeile hat und eine Domain nicht aufrufbar ist.

Weiterlesen

Der unbekannte Befehl – „umask“ der Maskierer

Symbolisiertes Terminal

umask führt eigentlich sehr zu unrecht ein Schattendasein auf den meisten Rechnern denn umask ist ein Sicherheitsfeature was die Rechteverwaltung des Filesystems bestimmt. umask bestimmt wo und wann welche Besitzer- bzw Gruppenrechte gesetzt werden.

Bekanntlich hat unter Linux/Unix jede Datei einen Besitzer und gehört zu einer Gruppe. Unter Debian ist häufig für einen Benutzer auch der Name als Gruppe gesetzt. So gehört der Benutzer max dann der Gruppe max an. Weitere Gruppen wie floppy oder cdrom oder games können folgen. Jeder Benutzer der weder der Besitzer einer Datei ist noch der Gruppe angehört der gehört im Rechtesystem zu other.

Die wichtigsten Rechte werden in jeweils drei Bit beschrieben:

$ ls -l .bashrc
-rw-r--r-- 1 max max 3667 Jul 10 18:00 .bashrc
$ ls -ld .
drwxr-xr-x 77 max max 12288 Aug 25 23:02 .

Dabei symbolisiert die Ausgabe rwxrwxrwx die Rechte für den Besitzer, Gruppe und other (also alle anderen) und dahinter dann den Besitzer und die Gruppe zu der die Datei oder das Verzeichnis (Verzeichnisse sind unter Linux/Unix eigentlich auch nur eine besondere Art Datei) gehört.

Weiterlesen

Der unbekannte Befehl – „tee“ das T-Stück

Symbolisiertes Terminal

tee ist ein Befehl der praktisch nie alleinstehend benutzt wird sondern immer in Kombination mit anderen Befehlen und einer Pipe. Der Name tee leitet sich tatsächlich aus dem T-Stück bei Rohren ab. Normalerweise kennt Linux/Unix einen stdin, stdout und stderr als drei Kanäle. stdin ist der Eingabekanal, stdout der Ausgabekanal und stderr der Fehlerkanal. Im Zusammenhang mit tee spielt das eine wichtige Rolle denn tee ist sozusagen ein T-Stück für die Ausgabekanäle stdout und stderr. Normalerweise liest ein Befehl über den stdin ein und gibt über die beiden Ausgabekanäle aus welche oft der Bildschirm ist. Durch eine Pipe | kann die Ausgabe an weitere Befehle umgeleitet werden. So wird z.B. oft eine unübersichtliche Anzeige von ls an den Pager more weitergeleitete:

$ ls | more

und man erhält eine bildschirmseitenabhängige Ausgabe. Wenn man zwei Ausgabekanäle bedienen möchte dann kommt tee ins Spiel.

Weiterlesen

Geschützte Dateien mit vi als normaler Benutzer abspeichern

Logo von vim

Es ist sicher vielen schon passiert die normalerweise ohne root-Rechte arbeiten. Man öffnet eine Konfigurationsdatei, übersieht die Warnung beim öffnen und bearbeitet diese.

vi/vim Fehlermeldung Schreibschutz

Beim Abspeichern stellt man dann fest, dass man keine Schreibrechte für die Datei hat weil man das sudo oder su vor dem Aufruf von vi vergessen hat. Besonders ärgerlich ist das wenn die Änderungen umfangreich sind.

Weiterlesen

Pi-hole die Tonne für Werbung

Schild Zugang für Unbefugte verboten

Pi-hole ist ein Softwareprojekt, ursprünglich für den Raspberry Pi begonnen, welches auf Basis von dnsmasq einen Werbeblocker für das komplette lokale Netzwerk zur Verfügung stellt. Pi-hole funktioniert so, dass es als lokaler DNS-Server funktioniert und Anfragen zur Namensauflösung von Werbe-IP-Adressen so manipuliert das sie nicht ausgeliefert werden. Die DNS-Anfrage verlässt so niemals das lokale Netzwerk.

Zur Installation wird ein Raspberry Pi mit Raspbian benötigt. Eine detaillierte Installationsanleitung von Raspbian auf einem Raspberry Pi habe ich bereits verfasst (hier und hier).

Installiert wird Pi-hole recht einfach. Das Installationsscript wird mit:

wget -O basic-install.sh https://install.pi-hole.net

herunter geladen und

bash basic-install.sh

wird es gestartet.

Weiterlesen

Der unbekannte Befehl – „patch“ das Flickwerk

Symbolisiertes Terminal

patch ist ein Befehl der sicher von den wenigsten Benutzern benutzt wird denn normalerweise übernimmt das Einspielen der Paketbetreuer der Distribution und man installiert das bereits kompilierte Paket. Mit Hilfe von Patches werden Programmversionen oder Sicherheitspatches eingespielt. Jedoch sind auch alle möglichen anderen Szenarien denkbar. Der Vorteil einer Patchdatei ist, sie ist für Menschen lesbar da es eine reine ASCII-Datei ist, sie ist sehr viel kleiner als ein neues Programmpaket und der Patch lässt sich rückgängig machen. Patchdateien besitzen oft die Dateiendung .diff oder .patch. patch ist gewissermaßen das Gegenstück zum Befehl diff.

Weiterlesen

kais-universum.de