Zum Inhalt springen

Linux Befehlsreferenz

Linux Befehle

Linux Befehle und Erläuterungen

Die wichtigsten Linux-Befehle, die man regelmäßig benötigt.


Wir listen hier die wichtigsten Linux-Befehle auf und wie man sie anwendet.
Als IRC-Server Betreiber wirst Du regelmäßig Eggdrops oder IRCDs installieren, oft über Source -Dateien.
Daher werden wir hier eine Sammlung an Unix und Linux-Befehlen auflisten, damit Du diese schnell nachschlagen kannst. Dieser Abschnitt ist der Aufwendig, Du kannst Befehle jederzeit hinzufügen.

Es ist nicht unser Ziel ein ultimativen Linux Guide zu erstellen, da es bereits tolle Referenzen und Guides gibt, die mit viel Liebe erstellt, gepflegt und kopiert wurden.

Linux Befehle

Es gibt 19 Linux Befehle in diesem Verzeichnis, die mit dem Buchstaben C beginnen.
C

cat

cd

cd (Change Directory)

cd (Change Directory):


Wechselt das aktuelle Arbeitsverzeichnis zu einem anderen Verzeichnis. Es ist einer der grundlegendsten Befehle zur Navigation im Dateisystem.

Linux-Befehl: cd
Anwendungsbeispiel:


 

Wechsle in das Verzeichnis /home/user/Documents mit cd /home/user/Documents

Weitere Befehle und Optionen:


cd ..: Wechselt in das übergeordnete Verzeichnis.
cd ~: Wechselt in das Home-Verzeichnis des aktuellen Benutzers.
cd -: Wechselt in das zuletzt besuchte Verzeichnis.
cd /: Wechselt in das Root-Verzeichnis.
cd /path/to/directory: Wechselt in ein spezifisches Verzeichnis.
Handbuch für den Befehl: man cd
Eingereicht durch: Schutzgeist

chage
chage:
Ein Befehl, der verwendet wird, um die Passwort-Ablaufinformationen eines Benutzerkontos zu ändern und anzuzeigen.

Mit chage kannst du festlegen, wie oft ein Benutzer sein Passwort ändern muss, wann das Passwort abläuft, wann der Benutzer gewarnt wird, und ob das Konto nach Ablauf des Passworts gesperrt wird
.

Linux-Befehl: chage

Anwendungsbeispiel:
Zeige die aktuellen Passwort-Ablaufeinstellungen für einen Benutzer an mit

chage -l username.

Fallbeispiel im Bereich IRC (Internet Relay Chat):


Angenommen, du betreibst einen IRC-Server unter irc.irc-mania.net und möchtest sicherstellen, dass der Benutzer ircadmin, der für die Verwaltung des Servers verantwortlich ist, sein Passwort regelmäßig ändert, um die Sicherheit zu gewährleisten. Mit chage kannst du die Einstellungen für das Passwortablaufdatum und die Warnungen vor dem Ablaufdatum konfigurieren.

Beispiel: Setze das Passwort von ircadmin so, dass es alle 90 Tage geändert werden muss, und warne den Benutzer 7 Tage vor dem Ablauf:

bash


sudo chage -M 90 -W 7 ircadmin


Dieser Befehl konfiguriert das Konto ircadmin so, dass das Passwort alle 90 Tage geändert werden muss, und gibt eine Warnung 7 Tage vor Ablauf des Passworts aus. Dies hilft sicherzustellen, dass das Konto, das für die Verwaltung des IRC-Servers irc.irc-mania.net verantwortlich ist, regelmäßig aktualisiert wird und somit die Sicherheit des Servers erhöht wird.

Ähnliche Linux-Befehle:

  • passwd: Ändert das Passwort eines Benutzers und kann auch verwendet werden, um das Passwort-Ablaufdatum zu setzen.

  • usermod: Verwendet, um Benutzerkontoinformationen zu ändern, einschließlich der Option, Passwort-Ablaufdaten festzulegen.

  • useradd: Fügt einen neuen Benutzer hinzu und kann Passwort-Einstellungen direkt beim Erstellen des Kontos festlegen.

  • chpasswd: Verwendet, um mehrere Benutzerpasswörter im Batch zu ändern.


Schalteroptionen und ihre Funktionen:



  • chage -l username: Zeigt die aktuellen Passwort-Ablaufeinstellungen für den angegebenen Benutzer an.

  • chage -M days username: Setzt die maximale Anzahl von Tagen, die ein Passwort gültig ist, bevor es geändert werden muss.

  • chage -m days username: Setzt die minimale Anzahl von Tagen, die zwischen Passwortänderungen liegen müssen.

  • chage -W days username: Setzt die Anzahl von Tagen, bevor eine Warnung über das Ablaufen des Passworts ausgegeben wird.

  • chage -E date username: Setzt das Datum, an dem das Benutzerkonto abläuft und gesperrt wird.

  • chage -I days username: Setzt die Anzahl von Tagen nach Ablauf des Passworts, nach denen das Konto deaktiviert wird.


MAN-Überschriften:



  1. NAME
    Beschreibung des Befehls.

  2. SYNOPSIS
    Die grundlegende Syntax für die Verwendung von chage.

  3. DESCRIPTION
    Detaillierte Beschreibung, was der Befehl tut.

  4. OPTIONS
    Beschreibung aller verfügbaren Schalteroptionen.

  5. FILES
    Hinweise auf relevante Dateien wie /etc/shadow, die von chage verwendet werden.

  6. SEE ALSO
    Verweise auf verwandte Befehle und Dokumentationen, z.B. passwd, usermod.

  7. AUTHOR
    Informationen über den Autor des Befehls.

  8. BUGS
    Informationen zu bekannten Fehlern und deren Behebung.


Handbuch für den Befehl: man chage
Eingereicht durch: Schutzgeist

chmod
In Unix-ähnlichen Betriebssystemen legt der Befehl chmod die Berechtigungen für Dateien oder Verzeichnisse fest.
Dateiname der Berechtigungen für chmod- Optionen  

Angenommen , Sie sind Eigentümer einer Datei mit dem Namen myfile und möchten ihre Berechtigungen so festlegen , dass:






    1. die U ser Dose r ead, w rite, und e x ecute es;







    1. Mitglieder Ihrer g roup kann r ead und e x ecute es; und







    1. o thers nur r es ead.




 
chmod u = rwx, g = rx, o = r meineDatei

Befehl:

chmod 774 meineDatei

Allerdings kann chmod auch für USB-Ports verwenden.

In Bezug auf USB-Ports wird chmod oft verwendet, um die Zugriffsrechte für Gerätedateien im /dev-Verzeichnis zu ändern, was den Zugriff auf USB-Geräte beeinflussen kann.

Beispiele für die Nutzung von chmod bei USB-Ports



  1. Ändern der Zugriffsrechte für ein USB-Gerät: Angenommen, ein USB-Gerät ist unter /dev/ttyUSB0 gelistet. Um allen Benutzern Lese- und Schreibzugriff zu gewähren, würden Sie folgenden Befehl verwenden: sudo chmod 666 /dev/ttyUSB0.

  2. Einschränkung des Zugriffs: Um den Zugriff auf das Gerät auf den Eigentümer zu beschränken, würden Sie den Befehl sudo chmod 600 /dev/ttyUSB0 verwenden.


Weitere Anwendungen von chmod außerhalb von Datei- und USB-Port-Administration



  • Script-Ausführbarkeit: Um ein Shell-Skript ausführbar zu machen, können Sie chmod +x skript.sh verwenden. Dies erlaubt allen Benutzern, das Skript auszuführen.

  • Sicherheit von privaten Schlüsseln: Bei der Verwendung von SSH-Schlüsseln ist es wichtig, die Dateiberechtigungen richtig zu setzen. Zum Beispiel sollte ein privater Schlüssel (id_rsa) mit chmod 600 id_rsa geschützt werden, um Lese- und Schreibzugriff nur für den Eigentümer zu erlauben.

  • Webserver-Dateiberechtigungen: Bei der Verwaltung eines Webservers müssen Sie möglicherweise die Berechtigungen von Dateien und Verzeichnissen anpassen, um die Sicherheit zu erhöhen und den korrekten Zugriff zu gewährleisten. Zum Beispiel könnten Sie chmod 755 /var/www/html verwenden, um das Verzeichnis für den Eigentümer beschreibbar und für alle anderen lesbar zu machen.

  • Dateiberechtigungen für gemeinsam genutzte Ressourcen: In einer Umgebung, in der mehrere Benutzer auf gemeinsame Ressourcen zugreifen, können Sie chmod verwenden, um zu steuern, wer diese Dateien lesen, schreiben oder ausführen kann. Beispielsweise ermöglicht chmod 774 datei dem Eigentümer und der Gruppe vollen Zugriff, während andere Benutzer sie nur lesen können.



Die Berechtigungen in Unix- und Unix-ähnlichen Systemen wie Linux, die mit dem Befehl chmod (change mode) gesetzt werden, sind in einem Oktalsystem (Basis 8) kodiert, das von 0 bis 7 reicht. Jede Ziffer in diesem System repräsentiert eine unterschiedliche Kombination von Zugriffsrechten. Die Berechtigungen beziehen sich auf drei Arten von Zugriffen: Lesen (read), Schreiben (write) und Ausführen (execute). Hier ist die Bedeutung jeder Zahl von 0 bis 7:

  1. 0: Keine Berechtigungen. Dies bedeutet, dass weder der Eigentümer noch die Gruppe noch andere Benutzer irgendeinen Zugriff (Lesen, Schreiben, Ausführen) auf die Datei oder das Verzeichnis haben.

  2. 1: Ausführungsberechtigung. Erlaubt das Ausführen einer Datei (z. B. ein Programm oder ein Skript), aber weder Lesen noch Schreiben.

  3. 2: Schreibberechtigung. Erlaubt das Schreiben oder Modifizieren einer Datei, aber weder Lesen noch Ausführen.

  4. 3: Schreib- und Ausführungsberechtigungen. Erlaubt das Schreiben/Modifizieren und Ausführen einer Datei, aber kein Lesen.

  5. 4: Leseberechtigung. Erlaubt das Lesen einer Datei oder das Auflisten eines Verzeichnisses, aber weder Schreiben noch Ausführen.

  6. 5: Lese- und Ausführungsberechtigungen. Erlaubt das Lesen und Ausführen einer Datei oder das Auflisten eines Verzeichnisses, aber kein Schreiben.

  7. 6: Lese- und Schreibberechtigungen. Erlaubt das Lesen und Schreiben/Modifizieren einer Datei oder das Auflisten und Ändern eines Verzeichnisses, aber kein Ausführen.

  8. 7: Vollzugriff. Erlaubt Lesen, Schreiben/Modifizieren und Ausführen einer Datei oder das Auflisten, Ändern und Ausführen von Operationen in einem Verzeichnis.


Diese Zahlen werden oft in einer dreistelligen Kombination verwendet, wobei jede Stelle für unterschiedliche Benutzergruppen steht: der Eigentümer (user), die Gruppe (group) und andere (others). Zum Beispiel würde chmod 754 datei dem Eigentümer vollen Zugriff (7), der Gruppe Lesen und Ausführen (5) und anderen nur Lesen (4) gewähren.

chmod (Change Mode)

chmod (Change Mode)


Ändert die Dateiberechtigungen für Dateien und Verzeichnisse. Berechtigungen können für den Besitzer, die Gruppe und andere festgelegt werden.

Linux-Befehl: chmod Anwendungsbeispiel:

Setze die Datei-Berechtigungen auf lesbar, schreibbar und ausführbar für den Besitzer mit chmod 700 filename.

Weitere Befehle und Optionen:


chmod +x filename: Macht eine Datei ausführbar.
chmod 755 filename: Setzt die Berechtigungen auf lesbar und ausführbar für alle, schreibbar nur für den Besitzer.
chmod -R 644 directory/: Setzt rekursiv die Berechtigungen für alle Dateien in einem Verzeichnis auf lesbar und schreibbar für den Besitzer, lesbar für andere.
chmod u+x filename: Fügt die Ausführungsberechtigung nur für den Besitzer (user) hinzu.

Handbuch für den Befehl: man chmod
Eingereicht durch: Schutzgeist

chown
chown - Ändert den Eigentümer und die Gruppe von Dateien und Verzeichnissen.
Beispiel: chown meinbenutzer:meinegruppe meine_datei.txt ändert den Eigentümer der Datei auf meinbenutzer und die Gruppe auf meinegruppe.

Ebenfalls eines der wichtigsten Befehle.
Gerade wenn man mit nginx arbeitet und plötzlich zahlreiche Fehlermeldungen erhält 😉

 

chronyc

chronyc:


Ein Kommandozeilenprogramm, das zur Interaktion mit dem chronyd-Daemon verwendet wird, der für die Synchronisation der Systemzeit mit Netzwerkzeitservern (NTP-Servern) verantwortlich ist. chronyc ermöglicht es dir, den Status von chronyd abzufragen, seine Konfiguration zu ändern, Statistiken zu überprüfen und andere administrative Aufgaben durchzuführen.

Linux-Befehl: chronyc

Anwendungsbeispiel:
Zeige den Status des chronyd-Daemons an mit chronyc tracking.

Fallbeispiel im Bereich IRC (Internet Relay Chat):


Angenommen, du betreibst einen IRC-Server unter irc.irc-mania.net, bei dem genaue Zeitstempel entscheidend sind. Du verwendest chronyd, um sicherzustellen, dass die Systemzeit immer synchronisiert ist. Mit chronyc kannst du den Status der Zeitserververbindungen überprüfen und sicherstellen, dass die Zeit korrekt synchronisiert wird.

Beispiel: Überprüfen des Synchronisationsstatus mit dem Befehl tracking:

bash


sudo chronyc tracking


Dieser Befehl zeigt den aktuellen Status der Zeitsynchronisation an, einschließlich des verwendeten Zeitservers, der Zeitdifferenz und der Genauigkeit der Synchronisation. Dies hilft sicherzustellen, dass der IRC-Server irc.irc-mania.net stets die korrekte Zeit verwendet.

Ähnliche Linux-Befehle:

  • ntpd: Ein alternativer Daemon zur Zeitsynchronisation, der in vielen älteren Systemen verwendet wird.

  • timedatectl: Verwaltet Systemzeit, Datum und Zeitzone, einschließlich der NTP-Synchronisation.

  • hwclock: Verwendet zur Verwaltung der Hardware-Uhr, in Verbindung mit chronyc zur Überprüfung der Synchronisation.

  • ntpdate: Führt eine einmalige Zeitsynchronisation mit einem NTP-Server durch.


Schalteroptionen und wichtige Befehle innerhalb von chronyc:



  • chronyc tracking: Zeigt detaillierte Informationen zur aktuellen Zeitsynchronisation, einschließlich der Differenz zwischen Systemzeit und Referenzzeit.

  • chronyc sources: Listet die NTP-Server auf, die chronyd verwendet, und zeigt deren Status an.

  • chronyc sourcestats: Zeigt detaillierte Statistiken über die Leistung und Genauigkeit der verwendeten NTP-Quellen.

  • chronyc makestep: Erzwingt eine sofortige Anpassung der Systemzeit, wenn die Zeitdifferenz zu groß ist.

  • chronyc ntpdata: Zeigt detaillierte Informationen über die NTP-Pakete, die empfangen wurden.

  • chronyc settime: Setzt die Zeit manuell auf einen bestimmten Wert (normalerweise nicht empfohlen, da chronyd die Zeit automatisch synchronisieren sollte).

  • chronyc reload sources: Lädt die Liste der Zeitquellen neu, wenn die Konfiguration geändert wurde.

  • chronyc quit: Beendet die chronyc-Sitzung.


Wichtige Hinweise:



  • Echtzeitinteraktion: chronyc ist besonders nützlich für die Echtzeitüberwachung und -steuerung von chronyd, was es zu einem wertvollen Werkzeug in der Systemadministration macht.


MAN-Überschriften:



  1. NAME
    Beschreibung des Befehls.

  2. SYNOPSIS
    Die grundlegende Syntax für die Verwendung von chronyc.

  3. DESCRIPTION
    Detaillierte Beschreibung, was der Befehl tut und wie er mit chronyd interagiert.

  4. COMMANDS
    Beschreibung der wichtigsten Befehle, die innerhalb von chronyc verwendet werden können.

  5. SEE ALSO
    Verweise auf verwandte Befehle und Dokumentationen, z.B. chronyd, timedatectl, ntpd.

  6. AUTHOR
    Informationen über den Autor des Befehls.

  7. BUGS
    Informationen zu bekannten Fehlern und deren Behebung.


Handbuch für den Befehl: man chronyc
Eingereicht durch: Schutzgeist

chroot

chsh -s:

chsh -s /bin/false


Ein Befehl, der verwendet wird, um die Standard-Shell für den aktuellen Benutzer oder einen anderen Benutzer zu ändern. Die Option -s ermöglicht es, eine spezifische Shell als neue Anmelde-Shell festzulegen.

Linux-Befehl: chsh -s

Anwendungsbeispiel:
Ändere die Standard-Shell des aktuellen Benutzers auf /bin/zsh mit chsh -s /bin/zsh.

Fallbeispiel im Bereich IRC (Internet Relay Chat):


Angenommen, du betreibst einen IRC-Server unter irc.irc-mania.net und möchtest die Standard-Shell des Kontos, das für die Verwaltung des IRC-Servers verwendet wird, ändern. Wenn du beispielsweise von der Bash-Shell zur Zsh-Shell wechseln möchtest, um von den erweiterten Funktionen der Zsh zu profitieren, kannst du dies mit chsh -s tun.

Beispiel: Ändere die Standard-Shell für den Benutzer ircadmin auf /bin/zsh:


sudo chsh -s /bin/zsh ircadmin



Mit diesem Befehl wird die Standard-Shell für ircadmin, der möglicherweise für die Verwaltung des IRC-Servers irc.irc-mania.net zuständig ist, auf Zsh geändert. Dies kann nützlich sein, wenn du Zsh bevorzugst, weil sie erweiterte Funktionen wie bessere Autovervollständigung und Themen bietet.

Ähnliche Linux-Befehle:


 

  • echo $SHELL: Zeigt die aktuell verwendete Shell des Benutzers an.

  • cat /etc/shells: Zeigt eine Liste aller verfügbaren Shells auf dem System an.

  • usermod -s /path/to/shell username: Ändert die Shell eines bestimmten Benutzers.

  • passwd: Wird zum Ändern des Benutzerpassworts verwendet; oft zusammen mit chsh verwendet, um Benutzeranmeldedaten zu verwalten.


Schalteroptionen und ihre Funktionen:



  • chsh -s /path/to/shell [username]: Ändert die Standard-Shell für den angegebenen Benutzer. Wenn kein Benutzername angegeben wird, wird die Shell für den aktuell angemeldeten Benutzer geändert.


MAN-Überschriften:



  1. NAME
    Beschreibung des Befehls.

  2. SYNOPSIS
    Die grundlegende Syntax für die Verwendung von chsh.

  3. DESCRIPTION
    Detaillierte Beschreibung, was der Befehl tut.

  4. OPTIONS
    Beschreibung aller verfügbaren Schalteroptionen.

  5. FILES
    Hinweise auf Dateien, die von chsh verwendet werden (z.B. /etc/passwd).

  6. SEE ALSO
    Verweise auf verwandte Befehle und Dokumentationen.

  7. AUTHOR
    Informationen über den Autor des Befehls.

  8. BUGS
    Informationen zu bekannten Fehlern und deren Behebung.


Handbuch für den Befehl: man chsh
Eingereicht durch: schutzgeist

Clear
Der Clear -Befehl räumt Dein Terminal auf.
Ich nutze diesen relativ selten, wenn man sich aber viele Logfiles via "Cat" anschaut, dann dient es der Übersicht

cmp

comm

cp
cp = Copy-Befehl!

Der Copy-Befehl ist wohl einer der wichtigsten Befehle.
Gerade wenn man Sicherungsdateien wiederherstellen oder anlegen möchte
cp [Originalpfad] [Zielpfad]

Beispiel :
cp config.php /home/schutzgeist/backupdateien/
Sofern Du Dich im selben Verzeichnis befindest.
Alternativ kannst Du überall den kompletten Pfad angeben
cp /home/schutzgeist/config.php /home/schutzgeist/backupdateien/

Mehrere Dateien kopieren ?
Kein Problem

cp datei1.conf datei2.conf datei3.con /home/zielordner/

Du kannst auch mit Platzhaltern etc arbeiten

cp * /home/zielordner
würde alle Datien im Ordner in den Zielordner kopieren.

Der CP-Befehl hat noch weitere Optionen.
Willst Du auch alle  Unterverzeichnisse kopieren, so kannst Du den Befehl mit der Option -R (rekursiv) kopieren..

cp * -R /home/zielordner

Der Befehl
cp --help
zeigt Dir alle möglichen Optionen an:



cp --help
Aufruf: cp [OPTION]... [-T] QUELLE ZIEL
oder: cp [OPTION]... QUELLE... VERZEICHNIS
oder: cp [OPTION]... -t VERZEICHNIS QUELLE...
Kopieren von QUELLE nach ZIEL, oder mehreren QUELLE(n) in VERZEICHNIS

Erforderliche Argumente für lange Optionen sind auch für kurze erforderlich.
-a, --archive genau wie -dpR --preserve=all
--attributes-only nicht die Dateidaten, sondern nur die Attribute
kopieren
--backup[=KONTROLLE] eine Sicherung existierender Zieldateien erzeugen
-b wie --backup, akzeptiert aber kein Argument
--copy-contents wenn rekursiv, Inhalt von Spezialdateien kopieren
-d genau wie --no-dereference --preserve=links
-f, --force wenn existierende Zieldatei nicht geöffnet werden
kann, löschen und erneut versuchen (wird bei
Verwendung der Option -n ignoriert)
-i, --interactive vor einem Überschreiben nachfragen (überstimmt
eine vorangehende Option -n)
-H symbolischen Verknüpfungen, die auf der
Kommandozeile als QUELLE angegeben sind,
folgen
-l, --link Dateien verknüpfen, statt sie zu kopieren
-L, --dereference symbolischen Verknüpfungen in QUELLE immer folgen
-n, --no-clobber keine existierenden Dateien überschreiben
(übersteuert eine vorangehende Option -i)
-P, --no-dereference symbolischen Verknüpfungen in QUELLE nie folgen
-p genau wie --preserve=mode,ownership,timestamps
--preserve[=ATTR_LIST] angegebene Datei‐Attribute erhalten wenn möglich
(Voreinstellung: mode,ownership,timestamps;
weitere Attribute: context, links, xattr, all)
-c deprecated, same as --preserve=context
--no-preserve=ATTR_LIST Angegebene Attribute nicht erhalten
--parents kompletten Quell‐Pfad an VERZEICHNIS anhängen
-R, -r, --recursive Verzeichnisse rekursiv kopieren
--reflink[=WANN] Klon/CoW Kopien kontrollieren. Siehe unten
--remove-destination jede Zieldatei vor dem Versuch, sie zu öffnen,
löschen (im Gegensatz zu --force)
--sparse=WANN Erstellung von Dateien mit Löchern (s. u.) steuern
--strip-trailing-slashes Schrägstriche vom Ende jedes QUELLE‐Arguments
entfernen
-s, --symbolic-link symbolische Verknüpfungen erzeugen anstatt
zu kopieren
-S, --suffix=ENDUNG Standard-Sicherungs‐Dateiendung ändern
-t, --target-directory=VERZ alle QUELLE‐Argumente in VERZ kopieren
-T, --no-target-directory ZIEL als normale Datei behandeln
-u, --update nur kopieren, wenn die QUELL‐Datei neuer ist
als die Zieldatei oder die Zieldatei nicht
existiert
-v, --verbose durchgeführte Tätigkeiten erklären
-x, --one-file-system in diesem Dateisystem verbleiben
-Z den SELinux-Sicherheitskontext der Zieldatei
auf den Standardtyp setzen
--context[=KTXT] Wie -Z, oder, wenn KTXT angegeben wurde, den
SELinux- oder SMACK-Sicherheitskontext auf
KTXT setzen
--help diese Hilfe anzeigen und beenden
--version Versionsinformation anzeigen und beenden

Standardmäßig werden QUELL‐Dateien mit Löchern („sparse“) durch eine einfache
Heuristik erkannt und die korrespondierenden ZIEL‐Dateien werden ebenfalls
„sparse“ gemacht. Dieses Verhalten wird mit --sparse=auto ausgewählt. Geben
Sie --sparse=always an, um „sparse“‐ZIEL‐Dateien zu erzeugen, wenn die
QUELL-Datei eine ausreichend lange Sequenz aus Null‐Bytes enthält.
Verwenden Sie --sparse=never, um das Erzeugen von „sparse“‐Dateien zu
verhindern.

Wird --reflink[=always] angegeben, wird eine leichtgewichtige Kopie gemacht,
bei der die Datenblöcke nur dann kopiert werden, wenn sie sich geändert haben.
Wenn dies nicht möglich ist, scheitert das Kopieren. Wurde --reflink=auto
angegeben, wird stattdessen eine normale Kopie angelegt.

Die Endung für Sicherheitskopien ist „~“, außer wenn sie mittels --suffix
oder SIMPLE_BACKUP_SUFFIX explizit festgelegt wurde. Die Methode der
Versionskontrolle kann mit --backup oder Umgebungsvariable VERSION_CONTROL
festgelegt werden. Mögliche Werte sind:

none, off Niemals Sicherung erzeugen (selbst wenn --backup
angegeben wurde)
numbered, t Erzeugen von nummerierten Sicherheitskopien
existing, nil Nummeriert wenn nummerierte Backups existieren, sonst einfach.
simple, never Immer einfache Sicherheitskopien erzeugen

Als Spezialfall erzeugt cp eine Sicherheitskopie von QUELLE, wenn die Optionen
„force“ und „backup“ angegeben wurden und QUELLE und ZIEL der gleiche Name für
eine vorhandene reguläre Datei sind.

cpio
cpio --help
Aufruf: cpio [OPTION...] [Zielverzeichnis]
GNU cpio kopiert Dateien in und aus Archiven

Beipiele:
# In einer Namensliste benannte Dateien ins Archiv kopieren
cpio -o < Namensliste [> Archiv]
# Dateien aus dem Archiv entpacken
cpio -i [< Archiv]
# In einer Namensliste benannte Dateien in Zielverzeichnis kopieren
cpio -p Zielverzeichnis < Namensliste

Haupt-Operationsmodus
-i, --extract Dateien aus einem Archiv entpacken (im
Hineinkopiermodus ausführen)
-o, --create Das Archiv anlegen (im Herauskopiermodus
ausführen)
-p, --pass-through Im Durchlaufmodus ausführen
-t, --list Ein Inhaltsverzeichnis der Eingabe anzeigen

In jedem Modus mögliche Operatoren:

--block-size=BLOCKGRÖßE I/O-Blockgröße auf BLOCKGRÖßE * 512 Bytes
setzen
-B I/O-Blockgröße auf 5120 Bytes setzen
-c Identical to "-H newc", use the new (SVR4)
portable format. If you wish the old portable
(ASCII) archive format, use "-H odc" instead.
-C, --io-size=NUMMER Die I/O-Blockgröße auf die angegebene ANZAHL an
Bytes festlegen
-D, --directory=VERZ Ins Verzeichnis VERZ wechseln
--force-local Archivdatei ist lokal, obwohl deren Name
Doppelpunkte enthält
-H, --format=FORMAT Angegebenes Archiv-FORMAT verwenden
--quiet Anzahl der kopierten Blöcke nicht ausgeben
-R, --owner=[BENUTZER][:.][GRUPPE]
Die Eigentumsrechte aller erzeugten Dateien auf
die angegebenen Werte für BENUTZER und/oder
GRUPPE setzen
-v, --verbose Verarbeitete Dateien ausführlich listen
-V, --dot Einen ».« für jede verarbeitete Datei ausgeben
-W, --warning=FLAG Warnanzeige. Aktuelles FLAG ist eines von
»none«, »truncate«, »all«. Mehrfach
angegebene Optionen werden gespeichert.

Im Hineinkopier- und Herauskopier-Modus gültige Operatoren

-F, --file=[[BENUTZER@]HOST:]DATEINAME
Diesen DATEINAMEN anstelle der Standardeingabe
oder -ausgabe verwenden. BENUTZER und HOST können
optional angegeben werden, wenn das Archiv auf
einem entfernten Rechner liegt
-M, --message=ZEICHENKETTE ZEICHENKETTE ausgeben, wenn des Ende des
Datenträgers oder Sicherungsmediums erreicht ist
--rsh-command=BEFEHL Statt »rsh« den BEFEHL benutzen

Nur im Hineinkopiermodus mögliche Operatoren:

-b, --swap Sowohl »Halfwords« als auch Bytes der
»Halfwords« in den Daten vertauschen.
Äquivalent zu -sS
-f, --nonmatching Nur Dateien kopieren, denen keines der angegegeben
Muster entspricht
-I [[BENUTZER@]HOST:]DATEINAME Anstelle der Standardeingabe zu verwendender
Name der Archivdatei. BENUTZER und HOST können
optional angegeben werden, wenn das Archiv auf
einem entfernten Rechner liegt
-n, --numeric-uid-gid In der ausführlichen Inhaltstabelle UID und GID
numerisch anzeigen
-r, --rename Dateien interaktiv umbenennen
-s, --swap-bytes Die Bytes jedes »Halfwords« in den Dateien
vertauschen
-S, --swap-halfwords Die »Halfwords« jedes Worts (4 Bytes) in den
Dateien vertauschen
--to-stdout Dateien auf die Standardausgabe entpacken

-E, --pattern-file=DATEI Zusätzliche Muster aus DATEI lesen, die Namen zu
entpackender Dateien enthalten
--only-verify-crc When reading a CRC format archive, only verify the
checksum of each file in the archive, don't
actually extract the files

Nur im Herauskopiermodus mögliche Operatoren:

-A, --append Dateien an ein existierendes Archiv anfügen
--device-independent, --reproducible
Geräteunabhängige (reproduzierbare) Archive
erzeugen
--ignore-devno Gerätenummern nicht speichern
-O [[BENUTZER@]HOST:]DATEINAME Anstelle der Standardausgabe zu verwendender
Name der Archivdatei. BENUTZER und HOST können
optional angegeben werden, wenn das Archiv auf
einem entfernten Rechner liegt
--renumber-inodes Inodes neu nummerieren

Nur im Durchlaufmodus mögliche Operatoren:

-l, --link Dateien verknüpfen anstatt diese zu kopieren,
wenn möglich

Im Hineinkopier- und Herauskopiermodus gültige Operatoren:

--absolute-filenames Dateisystempräfixe nicht aus den Dateinamen
entfernen
--no-absolute-filenames Alle Dateien relativ zum aktuellen Verzeichnis
anlegen

Im Herauskopier- und Durchlaufmodus gültige Operatoren:

-0, --null Dateinamen in der Liste werden von einem
Null-Zeichen anstelle eines Zeilenumbruchs beendet

-a, --reset-access-time Zugriffszeiten der Dateien nach dem Lesen
zurücksetzen
-L, --dereference Symbolische Verknüpfungen dereferenzieren
(Zieldateien anstelle der Verknüpfungen
kopieren)

Im Hineinkopier- und Durchlaufmodus gültige Operatoren:

-d, --make-directories Übergeordnete Verzeichnisse anlegen, falls
nötig
-m, --preserve-modification-time
Letze Änderungszeiten beim Erstellen von Dateien
behalten
--no-preserve-owner Die Eigentumsverhältnisse der Dateien nicht
ändern
--sparse Dateien mit großen Null-Blöcken als
Sparse-Dateien schreiben
-u, --unconditional Alle Dateien bedingungslos ersetzen

-?, --help Diese Hilfeliste ausgeben
--usage Eine kurze Aufrufmeldung ausgeben
--version Programmversion ausgeben

Notwendige oder optionale Argumente für lange Optionen sind ebenso notwendig
oder optional für die entsprechenden kurzen Optionen.

cron

Crontab cron table Exkurs
Crontab ist ein wichtiges Tool in Unix- und Linux-Systemen, das zur automatischen Ausführung von wiederkehrenden Aufgaben (Jobs) verwendet wird. Diese Aufgaben können Skripte, Befehle oder Programme sein, die zu bestimmten Zeitpunkten oder in regelmäßigen Intervallen ausgeführt werden.

1. Was ist eine Crontab?



  • Eine Crontab (kurz für "cron table") ist eine Konfigurationsdatei, die Zeitpläne für cron-Jobs enthält. Jeder Benutzer auf einem System kann eine eigene Crontab-Datei haben, die angibt, welche Jobs zu welchen Zeiten ausgeführt werden sollen.

  • Der cron-Dienst (oder einfach cron) liest diese Crontab-Dateien und führt die darin definierten Aufgaben entsprechend aus.


2. Aufbau einer Crontab-Datei


Eine Crontab-Datei besteht aus einer Liste von Aufgaben, die jeweils in einer Zeile definiert sind. Jede Zeile hat ein bestimmtes Format:




Beispiele für Crontab-Einträge:



  • Täglich um Mitternacht:


    0 0 * * * /path/to/script.sh



    • Führt das Skript script.sh jeden Tag um 00:00 Uhr aus.



  • Jede Stunde:


    0 * * * * /path/to/command



    • Führt den Befehl jede Stunde zur vollen Stunde aus.



  • Jeden Montag um 03:30 Uhr:


    30 3 * * 1 /path/to/weekly-task.sh



    • Führt weekly-task.sh jeden Montag um 03:30 Uhr aus.



  • Am 1. eines jeden Monats um 06:00 Uhr:


    0 6 1 * * /path/to/monthly-task.sh



    • Führt monthly-task.sh am ersten Tag jedes Monats um 06:00 Uhr aus.



  • Alle 5 Minuten:


    */5 * * * * /path/to/frequent-task.sh



    • Führt frequent-task.sh alle 5 Minuten aus.




3. Verwaltung von Crontabs


Crontab bearbeiten:


Um die Crontab-Datei für den aktuellen Benutzer zu bearbeiten, verwendest Du den folgenden Befehl:


crontab -e


Dieser Befehl öffnet den Standard-Editor (z.B. nano, vim oder vi) und lädt die Crontab-Datei zur Bearbeitung.

Crontab anzeigen:


Um die aktuelle Crontab für den Benutzer anzuzeigen, ohne sie zu bearbeiten, verwendest Du:


crontab -l


Crontab löschen:


Um alle Crontab-Einträge des aktuellen Benutzers zu löschen, verwendest Du:


crontab -r


4. Systemweite Crontabs


Neben benutzerdefinierten Crontabs gibt es systemweite Crontab-Dateien, die global für alle Benutzer oder bestimmte Systemdienste gelten.

  • /etc/crontab: Diese Datei enthält systemweite cron-Jobs. Hier kannst Du auch einen Benutzer angeben, unter dem der Befehl ausgeführt werden soll.

    Beispiel:


    0 5 * * * root /path/to/system-script.sh



    • Führt system-script.sh jeden Tag um 05:00 Uhr als Benutzer root aus.



  • /etc/cron.d/: In diesem Verzeichnis kannst Du zusätzliche Dateien mit cron-Jobs ablegen, die ebenfalls systemweit gelten.


5. Spezielle Cron-Verzeichnisse


Diese speziellen Verzeichnisse in /etc/ ermöglichen das einfache Hinzufügen von Jobs, die in bestimmten Intervallen ausgeführt werden, ohne dass eine Crontab-Datei direkt bearbeitet werden muss:

  • /etc/cron.daily/: Skripte in diesem Verzeichnis werden einmal täglich ausgeführt.

  • /etc/cron.weekly/: Skripte in diesem Verzeichnis werden einmal wöchentlich ausgeführt.

  • /etc/cron.monthly/: Skripte in diesem Verzeichnis werden einmal monatlich ausgeführt.

  • /etc/cron.hourly/: Skripte in diesem Verzeichnis werden einmal stündlich ausgeführt.


6. Crontab-Syntax und Platzhalter



  • * (Sternchen): Steht für "jede" Einheit (z.B. jede Minute, jede Stunde).

  • / (Schrägstrich): Dient zum Festlegen von Intervallen. Zum Beispiel */5 bedeutet "alle 5 Minuten".

  • , (Komma): Listet verschiedene Zeitpunkte auf. Zum Beispiel 1,15 bedeutet "1. und 15. Minute".

  • - (Bindestrich): Gibt einen Bereich an. Zum Beispiel 1-5 bedeutet "von 1 bis 5".


7. Umgebungsvariablen in Crontabs


In einer Crontab-Datei kannst Du auch Umgebungsvariablen definieren, die vor den eigentlichen Jobs stehen. Einige gängige Umgebungsvariablen sind:

  • PATH: Gibt an, wo nach ausführbaren Dateien gesucht werden soll.


    PATH=/usr/local/bin:/usr/bin:/bin


  • SHELL: Gibt die zu verwendende Shell an (normalerweise /bin/sh oder /bin/bash).


    SHELL=/bin/bash


  • MAILTO: Gibt die E-Mail-Adresse an, an die die Ausgabe des Jobs gesendet werden soll.


    MAILTO=user@example.com



8. Fehlerbehebung und Logs



  • Cron-Logs: Die Ausgaben und Fehler von cron-Jobs werden normalerweise in /var/log/syslog (auf Debian-basierten Systemen) oder /var/log/cron (auf Red Hat-basierten Systemen) protokolliert.

  • Debugging: Um Probleme mit cron-Jobs zu debuggen, ist es oft hilfreich, die Ausgabe an eine Datei zu leiten oder die Jobausgabe per E-Mail an MAILTO zu senden.


9. Sicherheitsaspekte



  • Zugriff auf Crontabs einschränken:

    • /etc/cron.allow: Nur Benutzer in dieser Datei dürfen cron-Jobs erstellen.

    • /etc/cron.deny: Benutzer in dieser Datei dürfen keine cron-Jobs erstellen.



  • Richtige Dateiberechtigungen: Stelle sicher, dass die Skripte, die von cron ausgeführt werden, die richtigen Berechtigungen haben, damit sie nur von berechtigten Benutzern bearbeitet werden können.



Crontab ist ein mächtiges und flexibles Tool, um wiederkehrende Aufgaben auf einem Linux-System zu automatisieren. Mit der richtigen Syntax und Konfiguration kannst Du fast jede Aufgabe zu einem festgelegten Zeitpunkt oder Intervall ausführen lassen. Systemadministratoren verlassen sich stark auf crontabs, um tägliche Wartungsaufgaben, Backups, Systemupdates und vieles mehr zu automatisieren.
Eingereicht durch: Schutzgeist

CUPS (Common Unix Printing System)

Kleiner Exkurs: CUPS (Common Unix Printing System)


CUPS (Common Unix Printing System) ist das Standard-Drucksystem auf vielen Unix-ähnlichen Betriebssystemen, einschließlich Linux und macOS. Es ermöglicht die Verwaltung von Druckaufträgen, Druckern und Druckwarteschlangen und unterstützt eine Vielzahl von Druckern, von lokalen USB-Druckern bis hin zu netzwerkbasierten Druckern. CUPS verwendet das Internet Printing Protocol (IPP) zur Kommunikation zwischen Computern und Druckern.

Hauptfunktionen von CUPS



  1. Druckerverwaltung:

    • CUPS ermöglicht die Verwaltung von Druckern über eine webbasierte Benutzeroberfläche oder über Befehlszeilen-Tools. Du kannst Drucker hinzufügen, konfigurieren und entfernen, Druckaufträge verwalten und Warteschlangen überwachen.



  2. Unterstützung für verschiedene Druckprotokolle:

    • Neben IPP unterstützt CUPS auch andere Protokolle wie LPD/LPR, SMB (Samba), und mehr.



  3. Treiberunterstützung:

    • CUPS unterstützt eine Vielzahl von Druckertreibern, die von Druckerherstellern bereitgestellt werden. Es bietet auch eine Treiberunabhängige Möglichkeit für die Unterstützung von generischen Druckern.



  4. Webbasierte Konfiguration:

    • CUPS bietet eine webbasierte Schnittstelle für die Verwaltung und Konfiguration. Diese ist standardmäßig unter http://localhost:631 erreichbar.




Installation von CUPS auf Debian


Falls CUPS nicht bereits installiert ist, kannst Du es auf einem Debian-System einfach über die Paketverwaltung installieren:


sudo apt-get update
sudo apt-get install cups



Starten und Verwalten des CUPS-Dienstes


Nach der Installation kannst Du den CUPS-Dienst starten und überprüfen, ob er läuft:


sudo systemctl start cups
sudo systemctl enable cups
sudo systemctl status cups




  • start: Startet den CUPS-Dienst.

  • enable: Stellt sicher, dass CUPS beim Booten des Systems automatisch startet.

  • status: Zeigt den aktuellen Status des CUPS-Dienstes an.


 

Zugriff auf die CUPS-Weboberfläche


Die CUPS-Weboberfläche ist ein sehr nützliches Tool zur Verwaltung von Druckern und Druckaufträgen. Du kannst sie in einem Webbrowser öffnen:


http://localhost:631



Hier kannst Du:



  • Drucker hinzufügen und konfigurieren.



  • Druckaufträge verwalten (anhalten, fortsetzen, abbrechen).



  • Druckwarteschlangen überwachen.



  • Druckerfreigaben einrichten (damit andere Geräte im Netzwerk den Drucker nutzen können).




Befehlszeilen-Tools


CUPS bietet auch verschiedene Befehlszeilen-Tools, die nützlich sind, wenn Du die Druckerverwaltung über die Kommandozeile durchführen möchtest:

  • lpstat: Zeigt den Status von Druckern und Druckaufträgen an.


    lpstat -p


  • lpadmin: Fügt Drucker hinzu, entfernt sie oder ändert ihre Einstellungen.


    sudo lpadmin -p -E -v -m


  • cancel: Bricht Druckaufträge ab.


    cancel


  • lpoptions: Zeigt Druckeroptionen an oder setzt Standardoptionen.


    lpoptions -d



Drucker hinzufügen


Um einen Drucker über die CUPS-Weboberfläche oder über die Befehlszeile hinzuzufügen, brauchst Du die Druckeradresse (URL) und den entsprechenden Treiber. Ein typisches Beispiel für die Installation eines Druckers über die Befehlszeile könnte so aussehen:


sudo lpadmin -p MeinDrucker -E -v ipp://drucker_ip/printers/MeinDrucker -m everywhere


Hierbei:

  • -p MeinDrucker: Setzt den Namen des Druckers.

  • -E: Aktiviert den Drucker.

  • -v: Gibt die Adresse des Druckers an.

  • -m: Wählt den Druckertreiber aus. everywhere wird oft für moderne Drucker verwendet, die mit IPP Everywhere kompatibel sind.


Zugriffssteuerung und Freigaben


CUPS ermöglicht es, Drucker für andere Geräte im Netzwerk freizugeben. Dies kannst Du entweder über die Weboberfläche oder durch Bearbeiten der Konfigurationsdatei /etc/cups/cupsd.conf tun. In dieser Datei kannst Du auch Zugriffsrechte und Sicherheitsoptionen festlegen.


CUPS ist ein leistungsstarkes und flexibles Drucksystem, das auf vielen Unix-ähnlichen Systemen verwendet wird. Es ermöglicht die einfache Verwaltung von Druckern und Druckaufträgen, sowohl über eine benutzerfreundliche Weboberfläche als auch über leistungsstarke Befehlszeilen-Tools. Mit CUPS kannst Du eine breite Palette von Druckern verwalten und sowohl lokale als auch Netzwerkdrucker einrichten.
Eingereicht durch: schutzgeist

curl
Wird nur noch selten genutzt oder darauf verwiesen:

curl - Ein Tool zum Abrufen von Daten von Servern.
Beispiel: curl http://example.com ruft die Homepage von example.com ab.

Die meisten verwenden wohl wget, allerdings gibt es hier starke Unterschiede.

Curl kann für viele Dinge genutzt werden und ist dadurch deutlich mächtiger!

Sowohl "curl" als auch "wget" sind Befehlszeilen-Tools, die verwendet werden, um Dateien von einem Server herunterzuladen. Der Hauptunterschied zwischen ihnen liegt in den Funktionen, die sie bieten.

"Curl" ist ein vielseitiges Werkzeug, das mehrere Protokolle unterstützt, darunter HTTP, HTTPS, FTP, SCP, SFTP und mehr. Es kann Dateien von URLs, FTP-Servern und SFTP-Servern herunterladen und unterstützt auch den Upload von Dateien. "Curl" kann auch benutzerdefinierte Header und Cookies senden und kann sogar zur Durchführung von Tests von RESTful-APIs verwendet werden.

"Wget" ist hauptsächlich ein Tool zum Herunterladen von Dateien über HTTP, HTTPS und FTP-Protokolle. Es bietet Funktionen wie das Herunterladen von Dateien im Hintergrund, das Fortsetzen von unterbrochenen Downloads und das Rekursiv-Download von Dateien. Es kann auch verwendet werden, um eine komplette Website einschließlich Unterseiten und Bilder herunterzuladen.

Ein weiterer wichtiger Unterschied zwischen "curl" und "wget" liegt in der Art und Weise, wie sie auf eine fehlerhafte Verbindung reagieren. Wenn "curl" auf eine fehlerhafte Verbindung stößt, gibt es den Fehler aus und geht zum nächsten Befehl über. "Wget" versucht dagegen, die Verbindung wiederherzustellen, bevor es aufgibt.

Insgesamt ist "curl" eine bessere Wahl, wenn Sie mehr Funktionen benötigen, wie das Senden von Cookies oder benutzerdefinierten Headern oder wenn Sie mehrere Protokolle unterstützen möchten. "Wget" ist eine gute Wahl, wenn Sie einfach Dateien von einem Server herunterladen möchten und eine bessere Unterstützung für den Download von Websites und Rekursion benötigen.


Übermittle ein Linux Befehl
Schlagwörter: