Linux Einführung für Anfänger

Linux Einführung für Anfänger


Im Forum fällt mir immer wieder auf, dass es einige QNAP User gibt, die keinerlei Linux Erfahrung haben. Diese mühen sich dann häufig z.B. über QFile ab, irgendeine bestimmte Aufgabe zu erledigen ohne zu wissen, dass diese Aufgabe auf der Konsole sehr viel schneller und leichter erledigt wäre.


Daher richtet sich diese Linux Einführung genau an diese User. Diese Einführung behandelt die Themen die am häufigsten benötigt werden.


  • Begriffserklärungen
  • Wichtige Verzeichnisse
  • Wichtige Dateien ( smb.conf, /etc/apt/source.list usw)
  • Versteckte Dateien
  • Wichtige Befehle und Programme

    • Installation von Programmen (apt-get / entware-ng)
    • Berechtigungen

      • Wie ändert man berechtigungen (chmod, chown, chgrp)
      • Wie liest man berechtigungen (ls –al -> ausgabe)






Wichtige Verzeichnisse





Zuerst verschaffen wir uns einen Überblick über die Verzeichnisstruktur.


Dafür ist eine Sache zu beachten. Die normale Linux Verzeichnisstruktur unterscheidet sich geringfügig von der Verzeichnisstruktur im QNAP. Das liegt daran, dass es sich beim QNAP Betriebssystem um eine speziell angepasste Linux Version handelt in der zum Teil auch nicht alle Funktion enthalten sind.


Unter Windows ist es üblich, dass bei einer Installation die meisten Dateien unabhängig von ihrer Funktion in einem Verzeichnis abgelegt werden.


Unter Linux ist das anders. Hier hat jedes der Hauptverzeichnisse eine spezielle Funktion, bzw. die Dateien die darin abgelegt werden. So finden sich Konfigurationsdateien z.B. im Unterverzeichnis in /etc wieder.



/


Das Wichtigste Verzeichnis ist natürlich das Wurzelverzeichnis, symbolisiert durch ein /-Zeichen. Es wird auch root Verzeichnis genannt, man darf es jedoch nicht mit dem Verzeichnis /root verwechseln.



/root


/root ist das Home-Verzeichnis des Users root. Es ist das Einzige Homeverzeichnis, dass nicht unter /home zu finden ist.



/home


Im Homeverzeichnis liegen alle Userverzeichnisse außer die des Users root.



/etc


Hier liegen die Konfigurationsdateien von Programmen



/var


Unter /var liegen Dateien die häufig neu geschrieben werden müssen.


Unter /var/log finden sich z.B. die Logdateien und unter /var/www findet sich häufig die eigene Website wieder.



/share


Dieses Verzeichnis ist besonders für uns QNAP User wichtig, da sich hier die Freigabeordner und somit unsere Daten befinden. Die Freigabe Ordner findet man einmal als Softlink direkt im /share Verzeichnis z.B. /share/Multimedia oder richtig eingehängt unter /share/CACHEDEV1_DATA z.B. /share/CACHEDEV1_DATA/Multimedia


Zu beachten ist, dass es dieses Verzeichnis nicht Standardmäßig bei jeder Linux Installation gibt.



/mnt oder /media


In normalen Linux Installationen werden externe Medien in der Regel unter /mnt oder /media eingehängt. Sprich hier findet ihr z.b. euren USB-Stick oder euer CD-Laufwerk sofern eure Linuxsystem sie automatisch einhängt.



/nas_share


Unter der LinuxStation kann man über das Verzeichnis /nas_share auf die Freigaben vom NAS zugreifen.



Wichtige Dateien



Bevor an den nachfolgenden Dateien Änderungen vorgenommen werden, solltet ihr auf jedenfall eine Kopie der Datei anlegen, damit ihr sie im Notfall wiederherstellen könnt.


Eine Kopie erstellt ihr mit


cp [Quelldateiname] [Zieldateiname]


Im täglichen Umgang mit Linux, benötigt man einige Dateien besonders häufig. Die meisten davon liegen im /etc Verzeichnis. Da ich unmöglich auf alle Dateien eingehen kann, sind hier die jenigen die man am häufigsten benötigt.


Dazu zählen z.b. die


/etc/apt/source.list


Die source.list Datei ist besonders wichtig, weil Linux über diese Datei Updates für Programme nach lädt. Normalerweise muss man dieser Datei nur etwas ändern wenn man Programme aus bestimmten nicht Offiziellen Quellen hinzufügen möchte. Oder wenn man den Server ändern möchte von dem diese Dateien herunter geladen werden sollen. Ein weiter Grund wäre ein Upgrade auf eine neue Ubuntu Version. Wobei dies weder unter QNAP selbst noch unter der LinuxStation so ohne weiteres möglich ist. In der VMStation hingegen funktioniert das für gewöhnlich.



Die einzelnen Zeilen in der source.list beginnen dabei mit deb oder deb-source


deb sind die binärdateien, während deb-src den Quellcode beinhaltet.



Gefolgt wird das ganze vom Server der die Daten enthält. In Deutschland gibt es mehrere Server die die Daten bereithalten. Meist sind dies irgendwelche Uni-Server. Sinnigerweise verwendet man einen Server in seiner Nähe, da dann der Download etwas schneller laufen sollte.


Anschließend folgt der Codename der installierten Linux Distribution in meinem Beispiel also xenial
Dies kann man auch mit dem Befehl [b][/b]lsb_release –ci[b][/b] heraus finden.


Zu guter Letzt werden noch die gewünschten Komponenten angegen, z.b. main, universe, multiverse.






Hat man eine Grafische Oberfläche zur Verfügung ist es möglich die Systemeinstellungen-> Anwendungen & Aktualisierungen vorzunehmen.



/etc/samba/smb.conf auf dem NAS liegt diese Datei jedoch unter /etc/config/smb.conf



Wie man hier sieht liegen die Dateien leider nicht immer am selben Ort. Vor allem bei gekauften Geräten die ein integriertes Linux haben, liegen die Dateien häufiger auch mal an anderen Orten. Da bleibt einem nichts anderes übrig als die Verzeichnisse mal ein wenig zu durchstöbern.



Samba ist das Bindeglied zu anderen Betriebssystemen und wird häufig z.B. für Ordner- und/oder Druckerfreigaben verwendet. Mit hilfe von Samba kann man auch die Zugriffsberechtigungen auf die Freigabeordner steuern. So ist es möglich, z.b. nur einen lesenden Zugriff zu gewähren.



Wenn ihr in QFile Freigabeordner versucht zu löschen, tritt häufig das Problem auf, das diese am Ende trotzdem noch da sind. Dies liegt in der Regel daran, dass in der smb.conf noch ein Eintrag zu diesem Ordner vorhanden ist.



Diese Einträge umfassen in der Regel mehrere Zeilen und beginnen stets mit [Ordnername] und Enden direkt vor dem nächsten [Ordnername]



/etc/crontab



Mit crontab lassen sich regelmäßige Aufgaben automatisieren z.b. wenn immer nach dem Systemstart oder zu einer bestimmten Uhrzeit irgendetwas Bestimmtes getan werden soll, kann dies mit Hilfe eines Befehls oder Scripts und Crontab automatisiert werden. Z.b. wenn Regelmäßig eine Datei von einem Ordner in einen anderen Verschoben werden soll.



/etc/issue


Mit cat /etc/issue wird einem die installierte Linux distribution angezeigt.


Das Ergebnis sieht dann z.b. wie folgt aus:


Ubuntu 16.04.1 LTS \n \l


/etc/lsb-release


Mit cat /etc/lsb-release bekommt man noch etwas genauere Informationen.


Das Ergebnis sieht dann z.b. wie folgt aus:


Shell-Script
  1. DISTRIB_ID=Ubuntu
  2. DISTRIB_RELEASE=16.04
  3. DISTRIB_CODENAME=xenial
  4. DISTRIB_DESCRIPTION="Ubuntu 16.04.1 LTS"





/var/log


In diesem Verzeichnis befinden sich sämtliche log Dateien.


/var/www
In diesem Verzeichnis werden normalerweise die Websiten (die man selbst betreibt) gespeichert.
Auf dem QNAP ist das jedoch anders, dort liegen die Websiten eher unter /share/web



Wichtige Befehle und Programme

Wenn man das erste Mal vor einer Linux Konsole sitzt hat man vor allem ein Problem, wie lauten die Befehle die man eingeben kann und welche Optionen bieten sie?



Daher hier eine kleine Auflistung der von mir am häufigsten verwendeten Befehle. Diese Liste ist mit Sicherheit nicht vollständig, aber für einen Anfänger wird sie erst einmal genüngen.



sudo


Mit sudo verschafft man sich Superuserrechte. Damit kann man dann Programme installieren oder auf bestimmte Dateien und Verzeichnisse zugreifen auf die nicht jeder Zugriff hat.



Um sudo nutzen zu können muss der User jedoch in der /etc/sudoers eingetragen sein.


Der eintrag sieht dann in wie folgt aus.


%[username] ALL=(ALL:ALL) ALL




su


Mit dem Befehl su meldet man sich als Superuser an. Wenn man sehr viele Befehle mit Superuser Rechten ausführen muss hat dies den Vorteil, dass man nicht vor jeden Befehl sudo davor setzten muss.


Wenn man jedoch nach getaner Arbeit vergisst sich wieder mit su [username] in seinem normalen Account anzumelden hat man ein ähnliches Risiko wie man unter Windows ständig mit dem Admin User unterwegs ist.



apt-cache search [Programmname]



Mit apt-cache search kann man das repository durchsuchen wenn man z.b. nicht genau weiß wie ein bestimmtes Programm heißt das man installieren möchte.


Wenn man z.b. apt-cache search php eingibt bekommt man eine sehr lange Liste mit allen Programmen aufgelistet die im Namen oder in der Beschreibung das Wort php enthalten.



apt-get install [Programmname]


Hat man mit apt-cache search das betreffende Programm gefunden kann es mit apt-get install [Programmname] installiert werden.


apt-get update


Mit apt-get update wird die Packetindex Datei mit ihren Quellen syncronisiert. Dadurch sind informationen über neue und aktuallisierte Pakete verügbar.


apt-get upgrade



apt-get upgrade wird verwendet um alle auf dem System installierten Programme zu aktuallisieren.


apt-get update sollte immer ausgeführt werden bevor man apt-get upgrade verwendet.



apt-get remove



Mit apt-get remove [Programmname] können Programme deinstalliert werden. Jedoch bleiben die Konfigurationsdateien erhalten.



apt-get purge



Mit apt-get purge [Programmname] können Programme deinstalliert werden, wobei auch die Konfigurationsdateien gelöscht werden.



entware-ng


Unter Qnap muss man statt apt-get entware-ng verwenden.


Entware-ng muss jedoch zuerst auf dem QNAP installiert werden.


Ein gutes HowTo befindet sich hier
[HowTo] Entware-ng und Linux-Pakete installieren


Anschließend kann man unter anderem folgende Befehle verwenden, die ähnlich wie bei apt-get funktionieren.


opkg update
opkg upgrade


opkg install [Programmname]



man


Ein sehr wichtiger Befehl ist man. Mit man [Programmname] kann man sich weitere Informationen über ein bestimmtes Programm und dessen Optionen besorgen.


Leider ist der Befehl nicht immer auf allen Linux Systemen verfügbar. Allerdings wird man auch im internet schnell fündig wenn man danach sucht.


Am Ende kommt man mit der Tastenkombination shift+q wider aus man raus.




ls


ls ähnelt dem Befehl dir unter Windows und listet ebenfalls alle Dateien in dem betreffenden Ordner auf. Allerdings werden unsichtbare Datei so erst einmal nicht angezeigt.


Unsichtbare Dateien haben einen Punkt vor dem Dateinamen.


Um auch unsichtbare Dateien angezeigt zu bekommen muss man die Option -a verwenden.


Also ls -a, möchte man zusätzlich auch noch Informationen über Berechtigungen ansehen sollte man ls -al eingeben.



cd


genau wie in Windows kommt man mit cd [Verzeichnisname] ein Verzeichnis tiefer und mit cd .. ein Verzeichnis höher.



pwd


In manchen Linux distributionen wird einem nicht immer direkt angezeigt wo man sich gerade befindet. Da ist der Befehl pwd sehr nützlich da es einem immer anzeigt in welchem Verzeichnis man sich befindet.


pushd



Nutzt man statt cd den Befehl pushd um ein Verzeichnis zu wechseln, wird der Pfad zum aktuellen Verzeichnis gespeichert.



popd



Mit popd kommt man wieder zurück in das Verzeichnis, dass man mit pushd gespeichert hat.



cp



Mit cp kann man Dateien und Verzeichnisse kopieren.


Die einfachste Variante dieses befehls lautet:


cp [Quelle] [Ziel]


Möchte man ganze Verzeichnisse inklusive deren Unterordner kopieren empfielt es sich die option -r zu nutzen, da sonst die Unterordner nicht mit kopiert werden.


cp -r [Quelle] [Ziel]



mv


Mit mv kann man Dateien und Verzeichnisse verschieben oder umbennen.


Ob die Dateien bzw. Verzeichnisse verschoben oder umbennant werden hängt davon ab ob man den Dateinamen bzw. den Verzeichnisname beim Ziel angibt oder nicht.


Bei folgendem Beisspiel wird die Datei halli in hallo umbennant.


mv /home/hanswurst/halli /home/hanswurst/hallo



Im nächsten Fall wird die Datei halli ins Unterverzeichnis servus verschoben.
mv /home/hanswurst/halli /home/hanswurst/servus/


Im darauf folgenden Fall wird die Datei halli ins Unterverzeichnis servus verschoben und in hallo umbennant.


mv /home/hanswurst/halli /home/hanswurst/servus/hallo




ln –s


Mit ln -s können sogenannte Softlinks angelegt werden. Das ist ein Verweis auf eine Datei die eigentlich an einem anderem Ort liegt.
Falls man eine Datei von Unterschiedlichen Orten aufrufen möchte, benötigt man dadurch nicht überall eine Kopie dieser Datei die dann auch noch ständig gepflegt und auf dem gleichen Stand gehalten werden muss.



Wenn man also z.b. einen Küchenplan für alle Familienmitglieder aufgestellt hat, kann man die Datei an einem Zentralen Ort speichern und bei jedem User in dessen Homeverzeichnis einen Softlink auf die Datei legen.



ln -s /share/wochenplan/küchenplan.txt /home/hanswurst/



Gibt man im home-Verzeichnis von hanswurst ls -a ein sieht das Ergebnis dann wie folgt aus:




lrwxrwxrwx 1 admin administrator 10 Okt 1 16:10 küchenplan.txt -> /share/wochenplan/küchenplan.txt




touch


Mit touch kann man leere Dateien anlegen, das ist vorallem wenn man ein Script schreibt hin und wieder notwendig.


Des weiteren wird, wenn man den touch auf eine bestehende Datei anwendet der letzte Zugriffszeitpunkt erneuert.


cat


Mit cat [Dateiname] kann man sich Dateien direkt in der Konsole ausgeben lassen. Man kann die Dateien jedoch nicht bearbeiten sondern nur lesen.


nano


nano ist ein einfacher Editior, der im Gegensatz zum vi auch Anfänger tauglich ist, da er einfach zu bedienen ist.


Man kann mit nano eine Datei offnen, in dem man den Dateinnamen hinten anhängt.
nano [Dateiname]


vi


Sehr mächtiger Editior aber schwer zu bedienen, da die Bedinung nicht intuitiv erfolgt. Man benötigt umfangreiche Kenntnisse über die nötigen Tastkombinationen.


Sollte man sich einmal versehentlich hier hinein verirren mit :q kommt man wieder raus ohne das Änderungen gespeichert werden.
Mit :qw kommt man ebenfalls wieder raus jedoch werden die Änderungen gespeichert.



mkdir


mkdir steht für make directory und damit sollte auch schon klar sein, dass man damit ein neues Verzeichnis erzeugen kann.


rm


Mit rm können Dateien und mit bestimmten optionen auch Verzeichnisse gelöscht werden.


Dies kann mit unter gefährlich sein, da Linux nicht noch einmal nach fragt ob die Datei auch tatsächlich gelöscht werden soll. Es gibt auch keinen Papierkorb aus dem man Versehentlich gelöschte Dateien wiederherstellen könnte.


Mit rm [Dateiname] löscht man eine Datei.
Es ist möglich beliebig viele Dateien gleichzeitig zu löschtn dafür gibt es mehrere möglichkeiten.


Wenn wenige bestimmte Dateien gelöscht werden sollen, kann man die betreffenden Dateinamen einfach hintereinander schreiben.


rm Datei1 Datei2 Datei3 usw.


Möchte man z.b. alle jpg Dateien im Verzeichnis löschen kann dies mit sogenannten Wildcards geschehen.


z.b. rm *.jpg


Möchte man auch Verzeichnisse und deren Unterverzeichnisse löschen


Muss manrm -r Verzeichnissname verwenden.


Auch hier sind Wildcards möglich, jedoch sollte man aufpassen wo und wie man sie anwendet.
Im schlimmsten Fall ist es mit rm -rf * ohne Rückfragen möglich das komplette System zu löschen. Speziell wenn dieser Befehl im /-Verzeichnis ausgeführt wird, besteht diese Gefahr.

rmdir


rmdir ist für das löschen von Verzeichnissen zuständig. Dies funktioniert jedoch nur wenn das Verzeichnis komplett leer ist.
Es dürfen sich keine Dateien oder Unterverzeichnisse mehr darin befinden.
rmdir Verzeichnissname


whoami
Mit whoami kann feststellen als welcher User man gerade angemeldet ist.


screen


Screen ist ein sehr nützliches Tool, vorallem wenn man per Putty oder ähnlichem auf den Rechner zugreift.


Screen ermöglicht es, dass Befehle auch dann noch weiter ausgeführt werden, wenn man die Konsole wieder schließt.


Screen muss jedoch mitapt-get install screen extra installiert werden.



Mit screen -S [Sitzungsname] kann man eine neue Sitzung starten.


Mit screen -ls kann man sich die laufenden Sitzungen anzeigen lassen.


Mit screen -r [Sitzungsname] kann die Sitzung wieder aufgenommen werden.


Mit screen -d [Sitzungsname] trennt die Verbindung zu einer laufenden Sitzung.


Mit screen -rx [Sitzungsname] kann die Sitzung an mehreren Rechnern gleichzeitig angezeigt werden.



chown


chown steht für change owner also wird damit der Eigentümer einer Datei oder eines Verzeichnisses geändert.


Dies geschieht mit dem Befehl chown Username Datei1 Datei2 Verzeichnis usw.


Es ist möglich dabei auch gleich die Gruppe mit zu ändern in diesem Fall sieht der Befehl wie folgt aus
chown Username:Gruppenname Datei1 Datei2 Verzeichnis usw.



Sollte man die Änderung auch für Unterverzeichnisse machen wollen muss die Option -R Verwendet werden.



chown -R Username Datei1 Datei2 Verzeichnis



chgrp


chgrp steht für change group also wird damit die Gruppe geändert.
chgrp funktioniert ähnlich wie chown. Auch hier ist es möglich die Gruppe für mehrere Dateien gleichzeitig zu ändern.


chgrp Gruppenname Datei1 Datei2 Datei3 usw.


Auch gilt falls man Unterverzeichnissen neue Gruppen zuweisen möchte muss die Option -R verwendet werden



chmod


Mit chmod ändert man die Zugriffsrechte von Dateien und Verzeichnissen.


Dabei können Berechtigungen für den Besitzer der Datei (user), die Gruppe der Datei (group) und andere Benutzer (other) gesetzt werden.


Wie man in nachfolgender Tabelle sehen kann, können die Zugriffsrechte auf unterschiedliche weiße dargestellt werden.
Oktal, Binär und Symbolisch wobei man den ersten und den letzten Fall am häufigsten zu sehen bekommt.


Mit den Zugriffsrechten wird festgelegt ob man die Datei lesen (r), schreiben (w) oder ausführen (x) kann.



In diesem Beispiel kann der Besitzer der Datei, die Datei also lesen und schreiben jedoch nicht ausführen.
Die Gruppe der Datei und damit auch alle User die sich in der Gruppe befinden, können die Datei nur lesen.
Alle anderen User habe gar keine Zugriffsrechte.


Möchte man für alle User vollzugriff auf die Datei müsste man chmod 777 [Dateiname] eingeben.


Möchte man hingegen, dass nur der Besitzter vollzugriff hat und sowohl die Gruppe als auch alle anderen die Datei nur lesen und ausführen können, muss manchmod 755 [Dateiname] angeben.



passwd



Mit dem Befehl passwd kann man das eigene Passwort ändern.


Ruft man den Befehl als superuser auf, kann man auch Passwörter von anderen ändern.


Dazu muss man dann passwd username eingeben.



awk und sed
awk und sed sind zwei sehr mächtige Programme mit denen Mustervergleiche möglich sind.
Damit ist es z.b. möglich eine große Menge an Dateien von einem bestimmten Namensschema in ein anderes umzubenennen.


Leider ist der Funktionsumfang zu groß um ihn hier zu erklären.



shutdown


Mit shutdown -h now kann man das System sofort herunterfahren.
Mit shutdown -h 5 fährt das System in 5 Minuten herunter.
Mit shutdown -r 0 startet das System sofort neu.



Für ausführliche und gute Linux Anleitungen möchte ich euch noch ubuntuusers ans Herz legen. Wie der Name schon vermuten lässt bezieht sich dort alles auf Ubuntu.
Für die jenigen die noch einen größeren Überblick über alle möglichen Befehle in der Linux Welt haben möchten, kann ich nur das Taschenbuch "Linux Kurz & Gut" empfehlen.

Kommentare 5

  • Kleine Verbesserung zum Thema vi: es sollte erwähnt werden, dass erst der Doppelpunkt gedrückt werden muss, damit man die angegebenen Kommandos wie q! oder wq verwenden kann.

    • Danke für den Hinweis. Ich habe den Doppelpunkt ergänzt.

    • Das Ausrufezeichen ist auch verwirrend. Die Befehle sind doch eigentlich :w zum Schreiben :q zum Beenden und :wq als Kombination für Beides und das Ausrufezeichen bei :q! ist nur zum Beenden, wenn man die Datei zum Beispiel wegen fehlender Rechte als »nur lesbar« geöffnet hat. Da dürfte :wq! gar nicht funktionieren. (Also wenn man die Rechte hat natürlich schon, aber dann braucht man das ! ja nicht)

    • Ihr dürft mich hier gern korregieren. Ich verwende den vi nur wenn es nicht anders geht und mühe mich dann mit den Tastenkombinationen ab.

    • genaugenommen dient das ! nicht zum Beenden, sondern zum verwerfen der Änderungen. Da ist es auch egal mit welchen Rechten die Datei geöffnet wurde. Aber ich denke für eine Einführung dieser Art sollte :w zum Schreiben :q zum beenden ausreichen.