====== Ubuntu: Dies und das... ====== Basiswissen für Vergessliche. :-) ===== Der UNIX-Editor VI ===== Auf nahezu jedem Unix-Betriebssystem ist der zu Hause. Wichtig ist zu verstehen, dass der VI in verschiedenen Modi läuft. Diese Modi wären: * der Befehls-Modus * der Einfüge-Modus * der Kommandozeilen-Modus. Folgendes ASCII-Bild aus [[http://de.wikipedia.org/wiki/Vi#Arbeitsmodi|Wikipedia]] sollte es etwas veranschaulichen, wie die Modi aufgerufen werden und wie sie zu verstehen sind: | Start mit | vi v +--------------------+ +--------------------+ +-------------------+ | | | | | | | Kommandozeilen- | <--------- | Befehls-Modus | ---------> | Einfüge-Modus | | Modus | „:“ | | „i“, „a“, | | | | | Verwendung von: | „o“ usw. | | | z. B. „wq“, „q!“ | | yy, p, dd, J | | Normales Editie- | | oder komplexe | | usw. | | ren, Pfeiltasten | | Befehle wie | | | | Bildscrollen usw. | | „Suchen und | [Enter] | (Der vi startet | [Esc] | | | Ersetzen“ | ---------> | in diesem Modus) | <--------- | | | | | | | | +--------------------+ +--------------------+ +-------------------+ | | | Beenden mit | Beenden mit v „wq“ oder „x“ v „ZZ“ ==== Konvertieren von Zeichensätzen (vim) ==== :set ff=unix # UNIX-Format :set ff=dos # DOS-Format :set ff ? # zeigt aktuelles Format ==== Suchen und ersetzen ==== === Syntax === :Bereich/Suchbegriff/Ersatztext/gc %s = gesamtes Dokument \\ g = Ersetze alle Vorkommnisse des Suchbegriffs \\ c = Fordere eine Bestätigung für jede Ersetzung an \\ === Beispiel === %s/Suchtext/NeuerText/gc ==== Springen innerhalb einer Datei ==== :1 [enter] # Anfang :X [enter] # Springe zu Zeile X [Shift] + [G] # Ende ==== Exkurs: Den Standard-Editor ändern ==== Mittels des folgenden Befehls kann der Standard-Editor geändert werden: # update-alternatives --config editor Es gibt 6 Auswahlmöglichkeiten für die Alternative editor (welche /usr/bin/editor bereitstellen). Auswahl Pfad Priorität Status ------------------------------------------------------------ 0 /usr/bin/vim.nox 40 automatischer Modus 1 /bin/ed -100 manueller Modus 2 /bin/nano 40 manueller Modus 3 /usr/bin/mcedit 25 manueller Modus 4 /usr/bin/vim.basic 30 manueller Modus * 5 /usr/bin/vim.nox 40 manueller Modus 6 /usr/bin/vim.tiny 15 manueller Modus Drücken Sie die Eingabetaste, um die aktuelle Wahl[*] beizubehalten, oder geben Sie die Auswahlnummer ein: ===== Hostname ändern via CLI ===== Vorab sei gesagt, dass es in der Regel reicht, die Datei ''/etc/hosts'' anzupassen und den Server dann neuzustarten. Es müssen ansonsten zwei Dateien im Ordner ''/etc'' editiert werden: * ''hostname'' * ''hosts'' ==== Schritt 1: NetBIOS-Name ==== # echo "MeinHostname" > /etc/hostname ==== Schritt 2: FQDN persistent ==== 127.0.0.1 localhost.localdomain localhost ::1 localhost.localdomain localhost 127.0.1.1 MeinHostname MeinHostname.MeineDomain.de 88.77.66.55 MeinHostname MeinHostname.MeineDomain.de ==== Schritt 3: NetBIOS-Name neu einlesen ==== # hostname -F /etc/hostname Dieser Befehl setzt den Hostnamen zur Laufzeit. ===== Wie kann ich mich ohne Passwort auf einem anderen System einloggen? ===== Wir gehen hier davon aus, dass sowohl Client als auch Server Linux-Maschinen sind bzw. mit OpenSSH arbeiten! Durch Austausch von Public und Private Keys! Mal angenommen, wir wollen uns von "Client" zu "Server" ohne Passwort einloggen können: Client> # ssh-keygen Client> # ssh-copy-id username@server Client> # ssh username@server Last login: Tue Dec 2 10:38:51 2001 from 89.125.78.5 Have a lot of fun... Server> # less .ssh/authorized_keys Die Tools lauten: * ssh-keygen -> Es erstellt ein Private Keyfile für unseren User, der sich einloggen möchte. * ssh-copy-id -> Es tauscht den Public Key des Servers mit dem Private des Client aus. Es wird eine Art Vertrauensstellung erzeugt. Wenn der SSH-Dämon einen Nicht-Standard-Port nutzt: ssh-copy-id "user@host" -p 4711 Was ist jetzt konkret geschehen? - Wir haben zunächst einen Private Key und einen Public Key für unseren User auf dem Client erstellt (ssh-keygen). Dieser Schritt erzeugt Dateien in /home/username/.ssh wie folgt: * id_rsa * id_rsa.pub Der Inhalt der Datei id_rsa wurde vom Tool ssh-copy-id nach ''/home/username/.ssh/authorized_keys'' auf dem Server kopiert. Des Weiteren wurde der Public Key des Servers in die ''/home/username/.ssh/known_hosts'' aufgenommen. Der Public Keys des Clients ist das Gegenstück zum Private, der jetzt auch auf dem Server liegt. Daran kann der Benutzer eindeutig identifiziert und eingeloggt werden. ===== Screen-Sessions ===== **Sitzung erstellen** # screen -S sitzung1 **Sitzung wieder aufnehmen** # screen -r sitzung1 **Sitzung trennen** # screen -d sitzung1 ===== Mailserver-Handling ===== **Mailqueue** Anzeigen: # mailq Erneut abarbeiten: # sendmail -q ===== Schweizer Taschenmesser für Kopiervorgänge: rsync ===== |r | (copy) recursive | |t | (keep) timestamps | |L | copy-links | |v | verbose | |h | human-readable | |delete | delete (extraneous files from dest dirs)| rsync -rtLvh --stats --log-file=copy.log --partial --delete /var/files/ /srv/files/ Wird an das Quellverzeichnis ein / angehängt, so wie im vorherigen Beispiel, dann kopiert rsync nur den Inhalt nicht aber das Verzeichnis selbst. ===== Boot-Partition läuft voll ===== Oftmals hilft ein Aufräumen mittels Deinstallation alter Kernel-Dateien über apt-get autoremove Bleiben aber immer noch zu viele alte Kernel-Pakete stehen, dann kann sich sich zunächst mal anzeigen lassen, welche Kernel-Versionen auf dem System installiert sind: dpkg --list 'linux-image*' | grep ^ii ii linux-image-4.15.0-135-generic 4.15.0-135.139 amd64 Signed kernel image generic ii linux-image-4.15.0-136-generic 4.15.0-136.140 amd64 Signed kernel image generic ii linux-image-4.15.0-137-generic 4.15.0-137.141 amd64 Signed kernel image generic ii linux-image-generic 4.15.0.137.124 amd64 Generic Linux kernel image Der aktuelle Kernel ist mittels folgendem Befehl zu ermitteln. Dieser darf nicht entfernt werden! uname -a Der Befehl "autoremove" schlägt auch bei nicht aufgelösten Abhängigkeiten fehl. Wir entfernen aus der ''initrd.img'' zunächst alte Kernel mittels: update-initramfs -d -k 4.15.0-135-generic Jetzt ist wieder Platz auf /boot zum Arbeiten! Dann muss dieser Kernel noch sauber über die Paketverwaltung entfernt werden: dpkg --purge inux-image-4.15.0-135-generic Der Befehl schlägt unter Umständen fehl, da noch Abhängigkeiten bestehen. Die abhängigen Pakete müssten dann im Vorfeld entfernt werden, zum Beispiel: dpkg --purge linux-image-4.15.0-135-generic linux-image-extra-4.15.0-135-generic Alle nicht zu Ende installierten Pakete erneut installieren: dpkg --configure -a alternativ geht auch apt-get -f install > https://help.ubuntu.com/community/RemoveOldKernels ==== COMPRESS in /etc/initramfs-tools ==== [...] COMPRESS=xz [...] update-initramfs -u -k all ===== CHMOD ===== Berechnungtabelle Oktalsystem: ^ ^Owner^Group^Other^ |none|0|0|0| |read|1|1|1| |write|2|2|2| |execute|4|4|4| Berechnungbeispiel: ^ ^Owner^Group^Other^ |none|-|-|-| |read|X|X|X| |write|X|-|-| |execute|X|X|X| |**chmod**|1+2+4=**7**|1+4=**5**|1+4=**5**| > Weitere Infos: [[https://ss64.com/bash/chmod.html]] ===== Einfaches Dateibackup ===== ==== Backup-User anlegen ==== useradd backupuser -d /BACKUP/backupuser -M -s /bin/bash chown -R backupuser.backupuser /BACKUP/backupuser passwd backupuser ===== .bashrc ===== ==== Aliases ==== # enable color support of ls and also add handy aliases if [ -x /usr/bin/dircolors ]; then test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" alias ls='ls --color=auto' #alias dir='dir --color=auto' #alias vdir='vdir --color=auto' alias grep='grep --color=auto' alias fgrep='fgrep --color=auto' alias egrep='egrep --color=auto' fi # some more ls aliases alias ll='ls -alFh' alias la='ls -A' alias l='ls -CF' ===== Apt-get E: Could not get lock /var/lib/dpkg/lock ===== Wenn Apticron mal hängen bleibt, dann kann ein manuell angetriggertes "apt-get" nicht ausgeführt werden. Meist hängt dann ein Prozess namens "''apt-get -qq update''". ps aux | grep -i apt kill -9 82657