Letzte Änderung: 09. Mai 2022
Linux Tips & Tricks
Der Linux Verzeichnisbaum
/ # Wurzel.
/bin # Systemprogramme für alle User.
/boot # Programme für den Systemstart, z.B. 'lilo'-oder'grub'-Dateien.
/dev # Gerätetreiber.
/etc # Konfigurationsdateien.
/home # Heimatverzeichnisse der Benutzer.
/lib # Shagrey System-Libraries.
/mnt # Mount-Verzeichnis.
/proc # Dateien des virtuellen Prozess-Dateisystems für Hardware-Informationen.
/opt # Für Optionale Erweiterungspakete oder Programme (jeweils in Unterverzeichnissen), z.B. KDE, Firefox etc.
/root # Home-Verzeichnis des Super-Users 'root'.
/sbin # Ausführbare Dateien die nur für den Super-User 'root' bestimmt sind, wie z.B. 'fdisk' oder 'fsck'.
/tmp # Temporäre Dateien.
/usr # Unix System Ressources (hat nichts mit 'User' zu tun). Anwendungen und Dateien, die nicht für Systemverwaltung benötigt werden, z.B. Manuals, HowTo-Beschreibungen, X Window, Midnight Commander und Java J2SE.
/var # Variable Daten. Z.B. Log-Dateien unter '/var/log'.
Runlevel
0 = Halt (Shutdown)
1 = Einzelbenutzer-Modus
2 = Nicht belegt (vom Benutzer zu definieren)
3 = Vollständiger Mehrbenutzer-Modus
4 = Nicht belegt (vom Benutzer zu definieren)
5 = Vollständiger Mehrbenutzer-Modus (mit einem X-basierten Login-Bildschirm)
6 = Neustart
Dies wird beim Linuxstart in der Datei
/etc/inittab in der Zeile:
id:5:initdefault:
Der Befehl /sbin/runlevel (nur für root zu erreichen :D) sagt einem dann in welchem Level das System z.Zt. läuft.
Linux Rechtesystem
Zugriffsrechte einer Datei:
user-read Leserecht für Dateieigentümer
user-write Schreibrecht für Dateieigentümer
user-execute Ausführrecht für Dateieigentümer
group-read Leserecht für Gruppe des Dateieigentümers
group-write Schreibrecht für Gruppe des Dateieigentümers
group-execute Ausführrecht für Gruppe des Dateieigentümers
other-read Leserecht für alle anderen Benutzer
other-write Schreibrecht für alle anderen Benutzer
other-execute Ausführrecht für alle anderen Benutzer
r-- r-- r-- Lesen
rw- rw- rw- Schreiben
r-x r-x r-x Ausführen
rwx rwx rwx Lesen, Schreiben und Ausführen
4 4 4 Lesen
6 6 6 Schreiben
5 5 5 Ausführen
7 7 7 Lesen, Schreiben und Ausführen
Mit + und - könnt ihr die Flags hinzufügen oder entfernen. Das sieht dann so aus:
u = Eigentümer (User)
g = Gruppe (Group)
o = alle Anderen (Other)
chmod u+x meinedatei (Der Eigentümer bekommt Ausführrechte)
chmod g-w meinedatei (Der Gruppe werden die Schreibrechte entzogen)
chmod -x meinedatei (Eigentümer, Gruppe & Rest verlieren die Ausführrechte)
Zugriffsrechte für Verzeichnisse:
Das r-Recht an einem Verzeichnis zu besitzen heißt, man kann den Inhalt des Verzeichnisses
lesen, mit anderen Worten, man kann den Befehl ls für dieses Verzeichnis einsetzen.
Besitzen Sie das w-Recht an einem Verzeichnis, können Sie einen Verzeichniseintrag löschen,
das Verzeichnis wird verändert gespeichert, der Dateiname und die Inode-Nummer existieren
nicht mehr. Nehmen wir nun einen extremen Fall an. Eine Datei, an der Sie keinerlei Rechte
besitzen, befinde sich in einem Verzeichnis, in dem Sie das w-Recht haben. Diese Datei
können Sie, auch ohne Rechte an ihr selbst, löschen, denn Sie können das Verzeichnis
manipulieren! Gleiches gilt für das Umbenennen (ändert den Eintrag in einem Verzeichnis),
Verschieben (löscht den Eintrag in einem Verzeichnis) oder Erstellen (erzeugt einen neuen
Eintrag in einem Verzeichnis) einer Datei.
Das x-Recht an einem Verzeichnis bedeutet nun, daß Sie mit cd in das Verzeichnis wechseln dürfen.
Besonderheiten :
1. das "setuid" BIT
Es hat den Bitwert 4000 (einfach dazu addieren) und wird durch ein "s" statt dem "x" des Users
dargestellt und hat nur für ausführbare Dateien eine Bedeutung:
-rws r-x r-- 1 uwe lehrer 12 Mar 26 20:01 test
Dieses setuid-bit bewirkt folgendes: Wenn ein berechtigter Nutzer (hier im Bsp. die Gruppe
"lehrer" diese Datei ausführt, dann wird sie nicht mit seinen eigenen Rechten, sondern mit
den Rechten des Eigentümers der Datei ausgeführt. Aber Vorsicht, es kann bei unbedachter
Anwendung zu gravierenden Sicherheitslücken im System führen.
2. das "setgid" BIT
Es hat den Bitwert 2000 (einfach dazu addieren) und wird durch ein "s" oder "S" statt
dem "x" der Gruppe dargestellt und hat nur für Verzeichnisse eine Bedeutung:
drwx rwS r-- 1 uwe lehrer 12 Mar 26 20:01 test2
Dieses setgid-bit bewirkt folgendes: Wenn ein berechtigter Nutzer Dateien in dieses Verzeichnis
speichert, dann werden sie nicht unter seiner eigenen Gruppenzugehörigkeit, sondern unter der
Gruppenbezeichnung des Verzeichnisses (hier "lehrer") gespeichert. Das macht für gemeinsam zu
bearbeitende Projekte manchmal Sinn.
3. das "sticky" BIT
Es hat den Bitwert 1000 (einfach dazu addieren) und wird durch ein "t" oder "T" statt dem
"x" für "alle" dargestellt und hat heute nur noch nur für Verzeichnisse eine Bedeutung:
drwx rwx rwt 1 root root 12 Mar 26 20:01 tmp
Dieses sticky-bit bewirkt folgendes: Wenn ein berechtigter Nutzer Dateien in dieses Verzeichnis
speichert, kann nur er selbst diese wieder löschen, obwohl andere auch Schreibrechte besitzen
können. Das macht zum Beispiel für temporäre Dateien aller User in einem gemeinsamen Verzeichnis
Sinn.
Der Befehl Alias
Um Befehle abzukürzen bzw. sich selbst welche anzupassen kann man prima den Befehl alias verwenden.
Um z.B. die MS-Dos Befehle zu emulieren könnte man sowas machen :
alias dir="ls"
alias copy="cp"
alias rename="mv"
alias md="mkdir"
alias rd="rmdir"
alias del="rm -i"
Um alle aktiven Aliase anzuzeigen, schreibt man nur den Befehl # alias in die Bash.
Um das ganze permanent zu machen trägt man diese Befehle in die ~/.bashrc ein.
Systemweit siehe unten Bash Scriptdateien.
Bash Scriptdateien
Bei jedem Start einer bash wird folgende Reihenfolge beim lesen der Shell-Konfigurationsdateien (bash spezifisch) verwendet:
interactive login shell: You log into a remote computer via, for example ssh. Alternatively, you drop to a tty on your local machine (Ctrl+Alt+F1) and log in there.
interactive non-login shell: Open a new terminal.
non-interactive non-login shell: Run a script. All scripts run in their own subshell and this shell is not interactive. It only opens to execute the script and closes immediately once the script is finished.
non-interactive login shell: This is extremely rare, and you're unlikey to encounter it. One way of launching one is echo command | ssh server. When ssh is launched without a command (so ssh instead of ssh command which will run command on the remote shell) it starts a login shell. If the stdin of the ssh is not a tty, it starts a non-interactive shell. This is why echo command | ssh server will launch a non-interactive login shell. You can also start one with bash -l -c command.
FILES
/bin/bash
The bash executable
/etc/profile
The systemwide initialization file, executed for login shells
~/.bash_profile
The personal initialization file, executed for login shells
~/.bashrc
The individual per-interactive-shell startup file
~/.bash_logout
The individual login shell cleanup file, executed when a login shell exits
~/.inputrc
Individual readline initialization file
Wichtig :
Aus einer Windows Manager gestarteten Konsole kommt man in eine nonlogin Shell !
Das kann man umgehen in dem man die KDE/Gnome Konsole so einstellt, das sie beim starten den Befehl 'bash --login' ausführt.
Im Runlevel 2,3 bei der Systemanmeldung, mit su - oder bash --login kommt man in eine login Shell !
Es gibt shellspezifische globale Konfigurationsdateien für eine login Shell (nicht standardisiert):
Red Hat/Fedora:
/etc/profile
Debian:
/etc/profile
Arch:
/etc/profile
FreeBSD:
/usr/local/etc/profile
Programme bei Systemstart starten
Das machen wir in der Datei /etc/rc.local
Viele Distributionen liefern diese Datei direkt mit, bei anderen kann man sich selbst eine rc.local bauen.
Einfach mal googlen, für jede Distri die keine rc.local hat, kann man sich eine solche einfach nachbauen.
Hard- und Softlinks
Mit einem Link ist ein und dieselbe Datei/Verzeichnis über mehrere (verschiedene) Namen aus eventuell
sogar verschiedenen Verzeichnissen heraus ansprechbar.
Hardlink :
Es wird einfach ein zusätzlicher Verzeichniseintrag auf eine Datei erstellt.
* Die Rechte sind für diese Links immer identisch.
* Nur auf Dateien können Hardlinks angelegt werden.
* Hardlinks müssen sich immer innerhalb eines Dateisystems (Festplattenpartition) befinden
* Erst dann, wenn der letzte Hardlink auf eine Datei gelöscht wird, wird die Datei selbst gelöscht.
* Der Befehl lautet:
ln [quelle] [ziel]
Softlink :
Ein Softlink ist selbst eine Datei, die auf eine andere Datei oder ein anderes Verzeichnis zeigt:
* Die rechte des Originals und des Softlinks können verschieden sein
* Sie können auf Dateien und Verzeichnisse angewandt werden
* Sie können auch über Dateisystemgrenzen hinweg erstellt werden
* Ist die Originaldatei gelöscht, zeigt der Softlink ins "leere".
* Der Befehl lautet:
ln -s [quelle] [ziel]
Mit Rootkit Scannern checken ob böse Menschen auf dem Rechner sind ...
www.chkrootkit.org und
http://rkhunter.sourceforge.net
Nach einem Systemupdate können Warnings bei rkhunter vorkommen. Die Datenbank auf die neuen Filehashes updaten macht man mit dem Befehl :
rkhunter --propupd
Für den Rootkit Hunter und Chkrootkit haben viele Distris fertige Pakete.
Für Fedora oder Centos also einfach ein "dnf install rkhunter" bzw. "dnf install chkrootkit" eingeben.
Oben noch die Links, falls man die Rootkit Scanner selbst kompillieren will ...
SSH Dienst sicherer machen (alle Änderungen in der /etc/ssh/sshd_config durchführen)
Rootlogin abschalten :
PermitRootLogin no
(TCP)-Port wechseln :
Port 723
Das unsichere Kommunikationsprotokoll 1 abschalten :
Protocol 2
SSH-Zugriff auf die ssh-Gruppenmitglieder reduzieren :
Nur Mitglieder der Gruppe "ssh" dürfen sich über SSH einloggen:
AllowGroups ssh
oder noch spezieller nur für einen User : AllowUsers username
Zusätzlich kann man den SSH Dienst zusätzlich noch mit dem Tool
Denyhosts
absichern.
Verschlüsselte "Secure Copy" SCP Verbindung zum Server:
Windows : Mit der Software
winscp (gesicherte SCP Verbindung unter Windows)
Linux X (KDE/Gnome): fish://username@80.265.542.34
Linux Shell: Zum Übertragen von einem anderen Server auf den lokalen Rechner:
# scp Benutzername@Servername:Quellpfad Zielpfad
Zum Übertragen vom lokalen Rechner auf einen anderen Server:
# scp Quellpfad Benutzername@Servername:Zielpfad
Optionen :
* -r rekursives Kopieren mehrer Dateien inklusive der Unterverzeichnisse
* -p Änderungs- und Zugriffszeiten der Dateien sowie die Berechtigungen (rwxrwxrwx) werden beim Kopieren beibehalten
* -q deaktiviert die Ausgabe von Statistiken
* -Q aktiviert die Ausgabe von Statistiken
* -l limit begrenzt die benutzte Bandbreite, wird in Kbit/s angegeben
* -o ssh_option hier können ssh Optionen angegeben werden, die nicht explizit für scp definiert wurden. Für mehr Infos siehe ssh_config.
Beispiel: Kopieren von daten.dat vom Zielrechner auf den lokalen Rechner:
# scp username@rrz.uni-koeln.de:/home/username/daten.dat daten.dat
Beispiel: Kopieren von daten.dat vom lokalen Rechner auf den Zielrechner:
# scp daten.dat username@rrz.uni-koeln.de:/home/username/daten.dat
Mail auf der Kommandozeile
Eine Mail mit Anhang aus der Konsole mit einem Oneliner verschicken:
# mail -s "Testing from" -r "sender " root@domain.de < <(echo "Test message")
oder mit dem Mailprogramm Mutt
# echo Das ist ein Test | mutt -s "Test-Subject" -a anhang.pdf mail@domain.de