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

Individualisierte Fehlermeldung bei URLs die durch Pihole geblockt wurden

Schild Zugang für Unbefugte verboten

Pihole ist ein gutes Werkzeug im Netzwerk um lästige Werbung auszufiltern. Das macht Pihole über eine Liste an URL Wird nun so eine betroffene URL aufgerufen dann beantwortet Pihole im lokalen Netzwerk die DNS-Anfrage selber und es wird in der Standardeinstellung im Browser folgende nichtssagende Fehlermeldung angezeigt:

Pihole Standardfehlermeldung des Browsers

Man kann so leider nicht unterscheiden ob die URL von Pihole geblockt wird, die URL ungültig ist oder ein Netzwerkproblem vorliegt.

Weiterlesen

Ein schneller Weg einen Linux-Desktoprechner neu zu installieren

Wenn das Desktopbetriebssystem nicht mehr das macht was man möchte ist es bei einer alten Installation manchmal einfacher den Rechner neu zu installieren. Von Vorteil ist es dabei wenn man, als man den Rechner installiert hatte, eine separate Partition für /home hatte denn dann käme man ohne Backup der Home-Verzeichnisse aus. Sicherheitshalber sollte man jedoch immer vorher /home und /root sichern. Vorsicht /root liegt normalerweise auf der Partion mit dem Mountpoint / also wird auf alle Fälle beim Installieren überschrieben. Bei  mir lagern dort vor allem selbstgeschriebene Scripte. Sichern sollte man diese Verzeichnisse jedoch auf alle Fälle da bei einem Fehler Datenverlust droht. Bei einem Server wird dieser Weg nicht funktionieren, da dort normalerweise viel unter /etc und anderen Verzeichnissen konfiguriert ist. Da sichert man am besten den kompletten Rechner oder lässt ihn von seinem Serverprovider sichern.

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

USB-Speichstick unter Linux neu formatieren

Schematisches Bild eines USB-Speichersticks

Die Aufgabe klingt eigentlich ganz trivial aber letztens hatte ich da ein echtes Problem bei einem Stick mit einem OpenMediaVault-Image. Alles was ich versucht habe ist mit einer Fehlermeldung ausgestiegen. Auch unter Windows 7, was ich dann widerwillig ausprobiert habe, war da nichts zu machen – auch Fehlermeldung und abgebrochen. Ich habe dann aber tatsächlich eine Lösung für das Problem gefunden.

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

kais-universum.de