Blog
Linux - Tipps & Tricks
 


Auf dieser Seite werden sehr spezielle Tipps zu Linux veröffentlicht. Wenn Sie eher Basis-Wissen benötigen, beispielsweise zu den unterschiedlichen Verzeichnissen unter Linux oder zu Befehlen inkl. deren Anwendung, dann müssen Sie einen der folgenden Links auswählen. Diese Seiten gehören auch zu dieser Homepage und wurden aus technischen Gründen unter einer anderen Adresse abgelegt. Nähere Informationen dazu finden Sie im Blog!

Zu den Befehlen, Beispielen und dem Linux Aufbau! Klick mich!

Wenn Sie Hilfe bei einem spezielleren Problem benötigen - Los ins Forum!


Allgemeine Information
Diese Seite mit Tipps & Tricks wird, genau wie die restliche Homepage, weiter ausgebaut. Ich werde versuchen jede Woche zwei neue Tipps bzw. Tricks zu veröffentlichen, um eine umfangreichere Sammlung bieten zu können.
Da das gesamte Projekt für eine einzelne Person sehr ambitioniert und zeitaufwendig ist, hoffe ich meinen Zielen und Ihren Ansprüchen gerecht werden zu können. Ihre Kritik hilft mir dabei.

Den Zugriff von Linux auf Windows unterbinden
Jeder der neben Linux auch Windows betreibt, hat sich sicher schon Gedanken gemacht, wie er den Zugriff von Linux auf Windows besser kontrollieren kann. Ich selbst habe "damals" aus Sicherheitsgründen ein Programm gesucht, mit dem ich die Windows-Partition verschlüsseln oder zumindest verstecken kann. Dabei gibt es für dieses "Problem" wesentlich nahe liegendere Möglichkeiten.
Die erste Möglichkeit, auf die jeder kommen kann der sich schon etwas mit Linux auseinander gesetzt hat, besteht darin die Benutzer-Rechte entsprechend zu setzen. Auf diese Weise kann man den Zugriff, der ohnehin bei NTFS-Partitionen nur im ansehen und kopieren der Daten liegt, weiter beschränken. Wie diese Benutzer-Rechte vergeben werden können Sie auf dem oben genannten Link (Befehle und Beispiele) nach lesen. Meiner Meinung nach ist aber ohnehin die zweite Möglichkeit, für diese Aufgabe, wesentlich interessanter!
Alle Partitionen die unter Linux eingehängt werden, benötigen einen Eintrag in der fstab-Datei. Diese finden Sie unter /etc/fstab. Wenn Sie diese Datei mit einem Editor (natürlich mit den nötigen Root-Rechten) öffnen, finden Sie dort die Einträge der bereits erkannten Partitionen auf Ihrer Festplatte. Die Windows-Partition erkennen Sie am Datei-System oder dem Einhängepunkt. Der Eintrag in meiner fstab-Datei sieht so aus:
/dev/hda1    /windows/c      ntfs   ...
Wenn vor diesen Eintrag ein #-Zeichen gesetzt wird, ist diese Partition auskommentiert und nach dem nächsten Booten nicht mehr zu sehen. Auf diese Weise kann jetzt niemand mehr Ihre privaten Daten, auf der Windows-Partition, sehen oder gar darauf zu greifen. Falls Sie selbst wieder auf diese Partition zugreifen möchten, einfach die # am Anfang der Zeile entfernen und neu booten.

Arbeit sparen - in einem Verzeichnis alle Besitzer-Rechte übertragen
Es ist unter Linux ganz normal, dass während eines Kopiervorgang von einer anderen Partition nicht nur die Daten kopiert werden, sondern auch die Benutzer-Rechte. So kommt es des öfteren vor, dass Sie Dateien in Ihr /home-Verzeichnis kopieren und trotzdem nicht auf diese zugreifen dürfen. Eigentlich keine große Sache! Ein Problem entsteht erst dann, wenn es sich dabei um eine größere Anzahl von Ordnern und Dateien handelt. So entsteht dann schnell viel nervige und eintönige Arbeit bis Sie alle Benutzer-Rechte übertragen haben.
Lösung:
Kopieren Sie  einfach folgenden Inhalt und fügen Sie das Ganze in einem Editor wieder ein:
................................ kopieren..........................................
for f in *; do
test -f "$f" && chown -R master-bratack "$f"
done
................................ kopieren..........................................
Speichern Sie die Datei jetzt unter einem Datei-Namen Ihrer Wahl ab (Bsp. Rechte_Umwandler). Falls Sie nun das nächste Mal vor diesem Problem stehen, öffnen Sie eine Konsole, wechseln (falls nötig) in das Verzeichnis und führen diese Datei in der Konsole (mit Root-Rechten), wie ein Skript (./Rechte_Umwandler), aus.
Achtung, falls die Ordner immer noch das "Zugriff-Verboten-Symbol" anzeigen, klicken Sie mit der rechten Maustaste auf so einen Ordner und sehen Sie unter den Eigenschaften, Registerkarte  Zugriffsrechte einmal nach. Wahrscheinlich steht dort das auch der Besitzer  die Dateien nur auflisten darf. Ändern Sie das ab - fertig!

Kein Trick - eher ein nützliches Tool
Ich habe am Anfang lange nach einem nützlichen Programm gesucht, welches die Suchfunktion unter Linux verbessern könnte. Zwar sind standardmäßig einige Möglichkeiten vorgesehen die diese Funktion bieten sollen, doch mit keiner war ich richtig zufrieden. In vielen Publikationen habe ich von einem Programm namens locate gelesen und obwohl es immer beschrieben war, als würde es zum Standardumfang gehören fand "Suse" keinen entsprechenden Befehl. Wie immer liegt das Problem auch hier im Detail. Das Programm wird zwar bei der Standardinstallation nicht mit installiert, doch es liegt bei der Suse-DVD bei. Außerdem ist es sinnlos nach dem Namen locate zu suchen, da locate ein Feature der findutils ist. Mit den findutils erhält man ein ganzes Paket mit Suchwerkzeugen und bietet, zumindest für mich, alle Funktionen die so ein Paket mitbringen sollte. Weiter unten werde ich nochmal alle Tools des Paketes aufzählen, doch dieser "Tipp" gilt locate und updatedb, da beide für die angesprochene Suchfunktion benötigt werden.
Um locate zu nutzen, muss es als erstes natürlich installiert werden. Das kann über die Installations-CD (falls das Paket enthalten ist), über eine Aktualisierungsquelle oder über ein Paket (z.B. tar.gz), welches erst noch kompiliert werden muss, geschehen. Falls man sich für die letztere Möglichkeit entscheidet, sollte es auf folgende Weise installiert werden, um sich an die Richtlinie des FHS (siehe Link ganz oben - der Linux Aufbau) zu halten.
./configure --prefix=/usr --libexecdir=/usr/lib/locate \  --localstatedir=/var/lib/misc
make
make install
Da locate kein Echtzeit-Suchprogramm ist, muss nun eine Datenbank (Suchindex) erstellt werden. Dies geschieht über den Befehl updatedb. Danach kann locate benutzt werden, beispielsweise über locate *.log (dieser Befehl würde alle Log-Dateien des Systems auflisten). Die Tatsache das locate über eine Datenbank arbeitet hat Vor- aber auch Nachteile. Der Vorteil von dieser Suchfunktion (und meiner Meinung nach, ist das viel wichtiger) - das Suchergebnis liegt "sofort" vor, da kein Echtzeit-Scan benötigt wird. Der Nachteil - es werden keine Dateien gefunden die nach der letzten Datenbank-Erstellung auf Ihren Rechner gelangt sind. Aber auch dieser Nachteil kann über einen Cron-Job leicht beseitigt werden, so dass Sie immer eine aktuelle Suchfunktion nutzen können. Aber dieser Tipp kommt erst morgen, da ich auch noch für die nächsten Tage "Munition" benötige.
Weitere Tools der findutils:

  • bigram     - legt Datenbanken an und wurde früher von locate benutzt
  • code        - der Vorgänger von frcode
  • frcode      - dient updatedb zur Komprimierung der Datenbanken
  • updatedb - Datenbanken erstellen (siehe Text)
  • locate     - Suchfunktion (Mustersuche - siehe Text)
  • find         - eine weitere sehr nützliche Suchfunktion (spezialisiert auf Kriterien)
  • xargs      - einen bestimmten Befehl auf mehrere Dateien anwenden


Ein Tipp für Suse - USB-Geschwindigkeits-Bug entfernen
Viel zu lange hat mich ein Fehler unter Suse 10.0 genervt. Das nicht noch andere User ihre Nerven strapazieren müssen habe ich mich entschieden, diesen Tipp dem USB-Geschwindigkeits-Bug zu wittmen.
Wie erkennt man diesen Bug?
Die Übertragung von Daten auf USB-Datenträger verläuft extrem langsam obwohl USB 2.0 (schnellere Variante als USB 1.1) verwendet wird. Jedem User der etwas Erfahrung im Umgang mit entsprechenden Datenträgern hat, sollte diesen Fehler bereits erkannt haben.
Wie behebt man diesen Fehler?
1.  Öffnen der Konsole und als Root anmelden - dann folgende Befehle eingeben:
2.  mkdir -p /usr/share/hal/fdi/policy/95userpolicy  (Ordner anlegen)
3.  gedit /usr/share/hal/fdi/policy/95userpolicy/nosync.fdi (öffnet Editor um die Datei nosync zu erstellen)
4.  Folgendes im Editor eingeben:
     <?xml version="1.0" encoding="ISO-8859-1"?>
     <deviceinfo version="2.0">
     <device>
     <match key="block.is_volume" bool="true">
     <match key="volume.fsusage" string="filesystem">
     <match key="@info.parent:storage.bus" string="usb">
     <merge key="volume.policy.mount_option.sync" type="bool">false</merge>
     </match>
     </match>
     </match>
     </device>
     </deviceinfo>
5.  Die erstellte Datei speichern
6.  rchal restart (Startet den HAL daemon neu)

Ab jetzt müssten Datenübertragungen - auch auf USB-Datenträgern - wieder die normale Geschwindigkeit haben.

Hier gleich noch ein Tipp! Wer unter andere Bugs auf seinem System leidet, findet hier oft eine Lösung: Hilfen zu Bugs
Bitte helfen Sie auch mit noch nicht erkannte Fehler zu beheben (Infos unter der gleichen Seite). Nur wenn jeder seinen Teil beiträgt, können solche Datenbanken funktionieren.



Variabeln in der Konsole nutzen
Heute habe ich mich für einen kleinen Tipp entschieden, der aber das Leben mit der Linux-Konsole um einiges komfortabler gestaltet. Wer will schon jedes mal die gleichen Befehle in die Tastatur hacken?
Es ist egal ob durch die Variabel ein Befehl oder ein Verzeichnis definiert werden soll. Grundsätzlich ist aber wichtig, dass man eindeutige Variabeln vergibt, um später durch diese Prozedur auch eine Vereinfachung zu erreichen.
Beispiel:

Dem Verzeichnis /home/master/Documents soll eine Variabel zu geteilt werden!
HomeDoc=/
home/master/Documents
Über $ teilt man dem System mit, dass es sich hierbei um eine Variabel handelt!
ln -s Datei $HomeDoc/Datei

Genauso geht man vor, wenn die Variabel einem Befehl zu geteilt werden soll!
alias aus="shutdown now"
Wenn dieser Befehl per alias definiert wurde, reicht ein aus, um den Rechner herunter zu fahren!

Bei Suse 10.2 wurde der Umgang mit alias-Befehlen u.ä. noch erleichtert, da diese jetzt auch über Yast konfigurierbar sind.

Software testen und wieder sauber deinstallieren - dank checkinstall
Dieses kleine Tool erspart viel Arbeit bei der Deinstallation von selbst-kompilierten Programmen. Da es die Möglichkeit bietet RPM-, DEB- oder SLACKWARE-Pakete aus Programmen, die nur im Quellcode oder im kompilierten tar-Archiv vorliegen, zu erstellen.
Dabei nutzt Checkinstall das Tool Installwatch, welches bei der Installation eines Paketes zu sieht, um diese Informationen weiter zu geben und daraus ein Distributionskonformes Paket zu "schnüren" (rpm, deb, slack). Auf diese Weise lässt sich das installierte Paket jeder Zeit wieder entfernen - ohne grossen Aufwand und ohne Reste zu hinterlassen.

Das Beste an Checkinstall ist aber, dass es keine weiteren Kenntnisse erfordert, denn der normale 3-Satz für die Installation eines Paketes "./configure && make && make install" wird einfach nur in ein "./configure && make && checkinstall" umgewandelt. Da das Programm aber wesentlich vielseitiger ist bietet es weitere Möglichkeiten an, um auch Module und Skripte installieren zu können:
"checkinstall make install_packages"
"checkinstall make modules_install"
"checkinstall install.sh"
"checkinstall setup"
"checkinstall rpm -i my-package-1.0.i386-1.rpm"

Wenn ein Paket mittels Checkinstall installiert wird, werden grundsätzlich einige Dinge abgefragt. Diese werden aber in der Regel richtig vorgegeben und benötigen keinen Eingriff oder es sind eindeutige Fragen die jeder Nutzer über sein System wissen sollte (Bsp. welches Paket soll erstellt werden rpm, deb oder slack).
Neben der Installation von Paketen ist es außerdem möglich, eine eigene Dokumentation über alle Programme die mit Checkinstall installiert wurden aufzubauen. Für diese Aufgaben ist das Tool doc-pak zuständig. Bei der ersten Nutzung wird dann nach einem Verzeichnis gefragt in dem die Dokumentationen der Pakete abgelegt werden können. Grundsätzlich ist es sinnvoll dort  folgende Dateien der installierten Programme zu lagern: README, INSTALL, COPYING, Changelog, TODO, CREDITS, etc
Mit diesem Programm kann man also nicht nur Programme der Distribution angepasst installieren sondern auch eigene man-pages aufbauen, in denen man eine Hilfe über die Benutzung der Programme findet.

Ein nützliches Skript um ps2pdf zu automatisieren
Den meisten Usern, die diese Homepage besuchen ist bestimmt aufgefallen, dass ich in meinem Blog viel Zeit der Erstellung von PDF-Dateien sowie den Programmen die das ermöglichen gewidmet habe. Der Grund dafür liegt einfach nur an der Kompatibilität des Formates zwischen den einzelnen Betriebssystemen. Da man bei einem PDF-Format nicht mit veränderten Formatierungen kämpfen muss, wie es beispielsweise zwischen OpenOffice und MS Office der Fall ist, bietet es sich zum Austausch zwischen Linux, Windows und MacOS an und wird dem entsprechend viel genutzt und benötigt.
Dieser Tipp befasst sich mit einem Skript, mit dem man den Befehl ps2pdf automatisieren kann. Für alle die nicht wissen, was es mit diesem Befehl auf sich hat, hole ich erst einmal etwas aus.
Unter Linux gibt es (soweit ich weiß) keine kostenlosen Programme, die direkt in das PDF-Format übersetzen. Dies ist nur über einen kleinen Umweg über das Postscript-Format (ps) möglich. Das Programm Ghostscript und der lpd-Eingabefilter werden dazu benötigt, da beide zusammen einen sauberen virtuellen Postscript-Druckertreiber bilden, der über die Option "Drucken in Datei" angesprochen wird. Aus diesem ps-Format wiederum, lässt sich dann ohne Probleme das PDF-Format bilden. Dies geschieht über einen kleinen Befehl auf der Konsole (ps2pdf Datei.ps). Leider ist es oft ziemlich umständlich, da man bei vielen Dokumenten erst jedes einzeln ausdrucken und dann per Befehl übersetzen muss. Das folgende Skript sorgt dafür, dass zumindest dieser letzte Arbeitsgang mit einem einzigen Doppel-Klick erledigt wird, alle ps-Dokumente in einem Verzeichnis auf einmal umgewandelt werden und die ps-Dateien sofort mit gelöscht werden.

#! /bin/bash
# In dem Verzeichnis mit den ps-Dateien starten
ls

# Verarbeitungsschleife
for f in *.ps; do
test -f "$f" && ps2pdf "$f" "`basename \"$f\" .ps`.pdf" && rm "$f"
done


Einen Scanner nutzen - dieses Howto richtet sich an Sane-Nutzer
Grundsätzlich: SANE ist die Abkürzung für "Scanner Access Now Easy" (den Scanner einfach nutzen). Die meisten Benutzer kennen aber eher die grafischen Frontends dazu mit den Namen xsane, kooka oder xscanimage. Diese Software verleiht SANE eine grafische Oberfläche, wodurch diese einfach über den Desktop steuerbar wird.
Das wichtigste Detail bei der Einrichtung eines Scanners ist die Firmware. Die Firmware ist eine Datei, die vom System benötigt wird, um den Scanner zu finden. In meinem Fall war es eine USB-Datei (genauer: gt680xfw.usb) die dem Windows-Treiber beigelegen hat. Falls  jemand probleme hat seine Firmware ausfindig zu machen, einfach den Scanner-Typ und -Model eingeben das Wort Firmware dazu und hübsch googeln oder einfach den Hersteller kontaktieren!
Hat man seine Firmware, dann sind es nur einige kleine Schritte zum Erfolg:
1.Die Firmware sollte jetzt in das passende Verzeichnis kopiert werden und man sollte dafür sorgen, dass die Datei ausführbar und lesbar ist. Das erreichst Du über:
su
mkdir /usr/share/sane/gt68xx/
cp PS1fw.usb /usr/share/sane/gt68xx/
chmod a+r /usr/share/sane/gt68xx/PS1fw.usb
2.In der "/etc/sane.d/dll.conf" muss jetzt das passende backend auskommentiert werden. D.h. die "#" vor dem passenden Eintrag entfernen und die Datei dann abspeichern. Bei mir war das zum Beispiel, passend zur Firmware der Eintrag "gt680xx". Sollte der passende Eintrag nicht angegeben sein, sollte man hier nach sehen, um das passende Backend zu finden:
Hier befinden sich Backends und grafische Frontends
3.Zum Schluss muss in der Datei "/etc/sane.d/gt68xx.conf" der passende Scanner-Typ auskommentiert werden. Danach sollte der Eintrag so aussehen:
# Medion/Lifetec/Tevion/Cytron MD/LT 9385:
override "artec-ultima-2000"
vendor "Medion"
model "MD/LT 9385"
Jetzt sollte der Scanner erkannt werden!!!

 
  Top