Thema: linux
-
Unix-Dateiberechtigungen und die umask
Jede Datei besitzt Berechtigungsbits für Eigentümer, Gruppe und Andere zum Lesen, Schreiben und Ausführen, dazu setuid-, setgid- und Sticky-Bit; neue Dateien erhalten ihre Berechtigungen von der umask des Prozesses. Geheimnisse gehören in Dateien mit 0600, Verzeichnisse benötigen Ausführen, um durchquert zu werden, und Dienste sollten unter einem dedizierten Benutzer laufen.
-
«No space left on device» diagnostizieren, obwohl df freien Platz zeigt
ENOSPC hat neben einer vollen Festplatte drei häufige Ursachen: erschöpfte Inodes, Platz, den gelöschte, aber von einem Prozess noch geöffnete Dateien belegen, sowie den reservierten Blockanteil bei ext-Dateisystemen. Vor jedem Löschen df -i, lsof +L1 und die Reservierung des Mounts prüfen.
-
Ein kleiner Swap-Bereich mit niedriger Swappiness reduziert OOM-Kills des Hauptdienstes auf speicherknappen Servern
Hypothese: Auf Einzweck-Servern, deren Arbeitsspeicherbedarf den RAM fast ausfüllt, lässt ein bescheidener Swap-Bereich zusammen mit einer niedrigen vm.swappiness den Kernel bei kurzen Lastspitzen kalten anonymen Speicher auslagern, sodass der Hauptdienst seltener per OOM beendet wird als auf demselben Host ohne Swap – auf Kosten gelegentlicher Latenz.
-
Ein Flame Graph lesen: Breite bedeutet Samples, die x-Achse ist keine Zeit
Ein Flame Graph stapelt aufgezeichnete Call-Stacks so, dass die Breite eines Frames den Anteil der Samples abbildet und die Höhe die Stack-Tiefe; die x-Achse ist alphabetisch sortiert, nicht nach Zeit. Breite Plateaus am oberen Rand als CPU-Hotspots lesen, breite Frames mit vielen schmalen Kindern als Aufrufer, die seltener aufgerufen werden sollten, und daran denken, dass ein CPU-Flame-Graph kein Warten zeigen kann.
-
Den Load Average lesen und den OOM-Killer verstehen
Der Linux-Load-Average zählt lauffähige Tasks und Tasks im unterbrechbaren Wartezustand (uninterruptible sleep) über 1, 5 und 15 Minuten; eine hohe Zahl bei untätigen CPUs deutet daher auf I/O oder ein hängendes Dateisystem hin. Kann Speicher nicht zurückgewonnen werden, wählt der OOM-Killer anhand eines Badness-Scores eine Task aus, den oom_score_adj von -1000 (nie) bis +1000 (zuerst) verschiebt.
-
Ein minimales nftables-Regelwerk für einen einzelnen Server
Eine einzige inet-Tabelle mit einer Input-Chain, die standardmässig verwirft, etablierten und verwandten Verkehr sowie Loopback zulässt, die vom Stack benötigten ICMP-Typen und die aufgeführten Dienst-Ports akzeptiert; vor dem Laden mit nft -c -f geprüft und mit einem zeitgesteuerten Rollback geladen, damit ein Fehler nicht aussperrt.
-
Einen Dienst unter systemd betreiben
Eine Unit-Datei legt fest, wie ein Dienst startet, neu startet und eingegrenzt wird; Type, Restart=on-failure, Ressourcenlimits und Sandboxing-Direktiven verwenden und Logs mit journalctl lesen, statt eine eigene Daemonisierung zu schreiben.
-
First look at a misbehaving process with strace and tcpdump
Attach strace to see which system call a stuck process waits in and which files or sockets it touches; run tcpdump with a narrow filter and a packet count to see whether the peer answers at all. Both need privileges, both slow or fill things, so bound them in time and scope.
-
Zugriffsrechte nach dem Minimalprinzip vergeben
Jede Identität – Mensch, Dienst, Agent – erhält nur die Rechte, die ihre normale Aufgabe braucht, und nur so lange, wie sie sie braucht: eigene Datenbankrolle je Dienst mit GRANT auf das Nötige, Prozesse ohne root und mit einzelnen Capabilities statt Allmacht, zeitlich begrenzte Erhöhung für Menschen, regelmässige Entrümpelung.
-
Checking server time synchronisation: timedatectl, chronyc tracking and what to alert on
Clock drift breaks certificate validation, token expiry, log correlation and lock leases silently; on every host check that a time service is running and synchronised, read the offset, stratum and leap status from the daemon, alert on 'not synchronised' and on an offset above a locally chosen bound, and re-check after reboots and image rebuilds.
-
TCP connections: the handshake, retransmission timers and keep-alives
A TCP connection starts with a three-way handshake, recovers lost segments by a retransmission timer that doubles on each failure, and is only checked for liveness if keep-alives are switched on per socket. Linux defaults mean a hung peer takes minutes to notice and an idle connection two hours before the first probe.
-
Hardening an SSH server without locking yourself out
Turn off password and keyboard-interactive login, restrict root and the allowed users, keep MaxAuthTries and LoginGraceTime tight, prefer ProxyJump to agent forwarding, and test every sshd_config change with sshd -t while a second session stays open.
-
Measuring a process's memory on Linux: virtual size, RSS, PSS and what each answers
VmSize counts reserved address space and says little about cost; VmRSS is what is resident now, including pages shared with other processes; PSS divides shared pages among their users so that a sum over processes is honest. Pick the number that matches the question: will it fit, is it leaking, or what does it add.
Maschinenlesbar: JSON