Linux: Zugriff auf Windows-10-Freigaben

Jahrelang habe ich mit meinem Linux Rechner mit Xubuntu 20 auf einige wenige freigegebene Ordner eines PC mit Windows 10 zugegriffen. Bequem konnte ich im Filemanager Thunar auf „Netzwerk durchsuchen“ gehen, habe dann „Workgroup“ gefunden und darin die Freigaben von Windows. Nach dem Doppelklick stand in der Adresszeile

smb://192.168.178.1/<freigabename>

Vor kurzem ging das plötzlich nicht mehr. Ich wusste, dass es gerade ein recht großes Update gegeben hatte. Da ich es gewohnt war, dass sich früher bei Windows manchmal nach Updates die Einstellungen der Firewall geändert hatten und die Zugriffe von außen plötzlich gesperrt waren, kontrollierte ich erstmal das – ohne Erfolg. Windows ist nun nicht „mein“ Fachgebiet, also konsultierte ich einen Freund und der wusste sofort, was Sache war.

Die letzten großen Updates von Windows 10 hießen 20H2 und 21H1. Eins von beiden, vermutlich das letztere, habe den Zugriff auf Freigaben über das SMB-Protokoll aus Sicherheitsgründen aus Windows entfernt.

Meine Suchen ergaben, dass es zwar möglich sei, diesen Teil des Protokolls wieder zu installieren, aber das sei recht umständlich und bringe die gerade entfernte Unsicherheit natürlich wieder mit. Das war nun nicht gerade mein Ziel. Weitere Recherchen im Usenet brachten den Tip, stattdessen die entfernten Verzeichnisse als CIFS-Laufwerk zu mounten. Das basiert zwar auch auf SMB(2), realisiert den Zugriff aber transparent als virtuelles Filesystem.

Ich habe das hier beschriebene realisiert und zeige hier lediglich die Kurzfassung als Überblick. Das in Ubuntu nötige Paket cifs.utils ist vermutlich standardmäßig vorhanden, könnte aber leicht nachinstalliert werden:

sudo apt-get install cifs-utils 

Zunächst erstellt man ein für den User zugängliches Verzeichnis als Mountpoint, vielleicht so:

mkdir ~/Windows

Voraussetzung für das Weitere ist, dass es in Windows einen bekannten User gibt. Entweder greift man als der sowieso angemeldete einzige User zu oder man hat sich dort einen eigenen User eingerichtet, was ich als eleganter empfinde. Ich benutze die Verbindung selten und nur zum abgesprochenen Austausch diverser Files; zudem läuft Windows nicht immer und ein automatisches Mounten beim Hochfahren von Linux ist nicht sinnvoll. Deswegen habe ich mir lediglich zwei Starter auf dem Desktop erstellt, einen zum Mounten, den anderen zu Aushängen (den man eigentlich nicht zwingend braucht – weg ist weg!). Zunächst habe ich ein paar Zeile einschließlich Kommentar in die /etc/fstab geschrieben, die das „Laufwerk“ zwar nicht mounted, aber alle Parameter enthält und nicht unbefugt benutzt werden kann:

# auf WIN-PC freigegebenes Verzeichnis linux einbinden:
# =========================================================
//192.168.178.2/linux /home/rollo/Windows cifs username=...,password=...,user,noauto,rw,_netdev 0 0
# user sorgt dafür, dass ohne sudo gemounted werden kann und ~/Windows mir gehört
# mount: mount /home/rollo/Windows
# umount: umount ~/Windows
# _netdev ignoriert die Zeile, wenn kein Netzwerk da ist

Danach habe ich zwei Starter auf dem Desktop erzeugt, die die oben genannten Kommandozeilen enthalten und wegen dem Parameter „user“ ohne sudo aufrufbar sind. Daneben noch eine Verlinkung auf den Mountpoint ~/Windows und fertig. Hier die beiden Starter – wie man sieht ohne sudo:

mount /home/rollo/Windows
umount /home/rollo/Windows

Natürlich ließe sich das Ganze noch ausbauen durch einen Mechanismus zum automatischen Verbinden, sobald Windows beim Booten schon da ist oder später dazukommt. Da es aber keinen einfachen und sicheren Mechanismus zum automatischen Aushängen gibt, lasse ich das.

In Ubuntu mittlere Maustaste emulieren

Ich benutze am PC mit derzeit Ubuntu 18 eine Tastatur TK820 (wird wohl leider nicht mehr produziert) von Logitech mit großem Touchpad (das Folgende gilt sicher auch für die K400). Das hat zwei „Maustasten“ in den unteren Ecken (bei K400 richtige Tasten).

Bei allen (?) U**x-Systemen kann man eine einfache Technik für drag-and-drop in Konsolen oder anderen Texteingaben anwenden: Man markiert mit der linken Maustaste einen Text in Browsern, Shells, vielen Editoren und kann dann diesen Ausschnitt woanders mit der linken Maustaste ablegen. Das funktioniert nicht immer, abhängig von der Technologie der Programme. In Shellfenstern klappt das immer und ist gerade für die schnelle Arbeit mit Kommandozeilen sehr hilfreich.

Die genannten Keyboards haben aber eben keine mittlere Maustaste! Mein Ziel war also, diese Taste irgendwie im normalen Tastenfeld zu emulieren. So gehts:

Man nehme die in Ubuntu vorhandene „Einstellung > Tastatur > Tastenkürzel für Anwendungen“ und erzeugt einen neuen Eintrag („Hinzufügen“). In „Befehl“ schreibt man „xdotool click 2″ und drückt dann nach Aufforderung die Taste oder Kombination, die man gern hätte und sonst nicht braucht. Beim meinem PC ist das „altgr-strg“ rechts von der Leertaste, bei meinem Laptop die sonst zu nichts zu gebrauchende Menütaste ebendort.

Fertig. Ich arbeite schon lange ohne echte Maus, um den Arm zu schonen und nutze diese Möglichkeit ohne hinzusehen.

Nachtrag 1: In eine Shell kann man den auf diese Weise kopierten Text nicht ohne weiteres mit „altgr-strg“ einfügen – dachte ich bisher. Zufällig habe ich entdeckt, dass das zusammen mit shift doch geht! Damit ist diese Lösung ein vollwertiger Maus-Ersatz :-).

Nachtrag 2: xdotool ist möglicherweise nicht vorhanden und somit erst noch zu installieren (sudo apt install xdotool).

Nachtrag 3: Um den erzeugten Tastencode eines Eingabegerätes (also nicht nur der Maus) in einer Shell anzuzeigen, benutze ich das Tool evtest (Event-Test), das als root aufzurufen ist. Es kommt eine Liste der möglichen Eingabegeräte mit einer Gerätebezeichnung wie „/dev/input/event4: Telink 2.4G Mouse“ und der Aufforderung, die lufende Nummer (hier: 4) anzugeben. Dann kann man fröhlich klicken und bekommt eine Menge Parameter. Ausprobieren!

Thunderbird 60+: funktionierendes Addon FireTray

Seit der Version 60 von Thunderbird funktioniert das alte und vielbenutzte originale Addon FireTray nicht mehr. Es ermöglicht, den Thunderbird in die Trayleiste zu verkleinern, wobei er nicht beendet wird, und im dortigen Symbol die Anzahl der neu eingegangen Mails anzuzeigen. Ein Klick auf dieses Symbol weckt Thunderbird aus dem Schlaf. Somit ist es möglich, das Mailprogramm ständig laufen zu lassen und keine Mail zu verpassen – zusammen mit Lightning gilt das auch für Termine. Für mich jedenfalls eine essentielle Funktionalität eines der wichtigsten Büro-Programme!

Vor einiger Zeit habe ich hier das ebenfalls für die Version 60 angepasste Plugin „MinimizeToTray Reanimated 1.4.4“ vorgestellt, das einen Teil dieser Funktionen hat. Leider ist das ziemlicher Krampf, weswegen ich es bald wieder entfernt habe und sogar auf den Thunderbird 52 zurückgegangen bin – ein wirklich unbefriedigendes Ergebnis! Auch das alternative zusätzliche Notifier-Programm Birdtray leistet nicht, was ich möchte, zumal die Konfiguration recht umständlich ist.

Nun habe ich heute beim Stöbern in der Community für Mozilla Thunderbird endlich eine Version von FireTray gefunden, die mit der derzeitigen Version 60.2 funktioniert. Sie muss zwar auf einem Linux-System (!) selbst kompiliert werden, aber das ist samt Download in 4 einfachen Schritten schnell erledigt. Danach liegt das AddOn als firetray-0.6.1.xpi vor und kann über „AddOn aus Datei installieren“ in den Thunderbird geholt werden. Die einzelnen Schritte sind in diesem Artikel gut dokumentiert.

Der Autor meint, dass die entstehende Datei (xpi) auch für Windows funktionieren sollte – das habe ich mangels Windows nicht getestet. Vielen Dank, geier4711 in der Community!

Skype für Linux – Fehlanzeige 2

Bereits im letzten Jahr habe ich hier beschrieben, dass Skype auf „älteren“ PCs (Hardware!) und Ubuntu 16.04 nicht funktionierte. Inzwischen habe ich das Upgrade auf Ubuntu 18.04 gemacht – und Skype funktioniert „anders nicht“. Man kann es problemlos installieren, egal ob als deb-Paket von der Skype-Website oder per „sudo snap install skype –classic“. Danach lassen sich die Nutzerdaten eingeben, das Hauptfenster startet und funktioniert, das Symbol in der Taskleiste erscheint und alles sieht gut aus.

Nur überlebt das den Neustart nicht. Mit etwas Glück erscheint das letzte Chatfenster von gestern. Schließt man das, merkt man, dass damit auch Skype selbst nicht mehr läuft. Startet man es händisch erneut, erscheint wie früher ein leeres Fenster, das beim Bewegen den Hintergrund „mitnimmt“ und sich nur mit kill, pkill oder xkill schließen lässt. Eine Meisterleistung von Microsoft, vielen Dank!

Linux: überflüssige alte Kernel löschen

Ich habe mal gelesen, dass es mit neueren Linux-Distributionen nicht mehr zur früheren Ansammlung alter Kernel und zugehöriger Header-Pakete käme, wenn neue Kernel installiert werden. Obwohl meine derzeit noch laufende Ubuntu-Version 14.04 nun nicht unbedingt alt ist, fand ich heute ein gutes Dutzend solcher alter Pakete, die insgesamt über ein Gigabyte Platz benötigten.

Wenn das Boot-Verzeichnis in einer eigenen Partition liegt, kann das dazu führen, dass diese voll wird und dann keine Kernel-Updates mehr gemacht werden können.

Hier wiki.ubuntuusers.de/Skripte/Alte_Kernel_entfernen

wird beschrieben, wie man diesen Müll sicher und schnell entfernt. Die Kurzfassung:

dpkg -l 'linux-[ihs]*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\([-0-9]*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | tee zu_entfernende_Kernel

cat zu_entfernende_Kernel | xargs sudo apt-get -y purge
rm zu_entfernende_Kernel

Nicht vergessen: entweder jeweils sudo davor oder gleich in einer root-Shell machen! Achtung, die erste Zeile ist überlang, bitte komplett markieren! Die Datei „zu_entfernende_Kernel“ kann man nach dem ersten Schritt noch bearbeiten, falls man bestimmte Kernel dennoch aufheben möchte – das ist der Vorteil gegenüber Lösungen, die gleich alles in einem Rutsch machen.

Dienste in Linux beim Hochfahren starten lassen

Will man unter Linux einen Dienst selbständig starten, hilft ein schlaues Tool: update-rc.d. Das nimmt einem die Arbeit ab, den Dienst passend in die passenden Start- und Stopscripts aller Runlevel einzutragen. Ich nutze zum Beispiel zwei paralle installierte Webserver, natürlich nur einen als Standard – der andere schläft.

Beispiel

Nacheinder „Umschalten“ zweier installierter Webserver:

sudo update-rc.d nginx defaults
sudo update-rc.d apache2 remove

schaltet den Webserver ngingx künftig an, den Apache aus. Das kann man natürlich auch in 1 Script packen un dieses mit gksu oder sudo aufrufen:

#!/bin/sh
update-rc.d nginx defaults
update-rc.d apache2 remove

Quelle: Dienste und Programme in Ubuntu beim Hochfahren starten lassen