GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So verwalten Sie Linux-Dateifunktionen

Traditionell ist ein Linux-Prozess entweder privilegiert (wird als Root ausgeführt) oder nicht privilegiert. Privilegierte Prozesse unterliegen keinen Kernel-Berechtigungsprüfungen und haben daher die volle Macht über ein System. Eine Fähigkeit ist ein eindeutiges und unabhängiges Privileg, das von einem Prozess verwendet werden kann, um bestimmte Berechtigungsprüfungen zu umgehen. Funktionen wurden erstmals in Linux 2.2 eingeführt, und mehrere weitere wurden in späteren Versionen hinzugefügt. Sie werden normalerweise für ausführbare Dateien festgelegt und dem Prozess automatisch gewährt, wenn eine Datei mit einer Funktion ausgeführt wird. Fähigkeiten teilen im Wesentlichen die Befugnisse des Root-Benutzers in separate Privilegien auf, was die Sicherheit verbessert, indem der Zugriff eingeschränkt wird, den ein Angreifer durch die Ausnutzung oder den Missbrauch eines Dienstes erlangen würde.

Dieser Leitfaden stellt einige häufig verwendete Funktionen vor und zeigt, wie sie angezeigt und geändert werden können.

Allgemeine Funktionen

Der Linux-Kernel implementiert eine Vielzahl von Fähigkeiten. Einige davon sind:

  • CAP_SYS_ADMIN:Erlaubt eine Vielzahl von Operationen. Diese Fähigkeit sollte zugunsten spezifischerer Fähigkeiten vermieden werden.
  • CAP_CHOWN:Nehmen Sie Änderungen an der Benutzer-ID und der Gruppen-ID von Dateien vor 
  • CAP_DAC_READ_SEARCH:Dateilese- und Verzeichnislese-/Ausführungsprüfungen umgehen. Ein Programm mit dieser Fähigkeit kann verwendet werden, um jede Datei auf dem System zu lesen.
  • CAP_DAC_OVERRIDE:DAC (Discretionary Access Control) außer Kraft setzen, d. h. Lese-/Schreib-/Ausführungsberechtigungsprüfungen umgehen. Diese Fähigkeit gewährt einer ausführbaren Datei die Möglichkeit, auf jede Datei im Dateisystem zuzugreifen und sie zu ändern.
  • CAP_NET_BIND_SERVICE:Ermöglicht die Bindung an Portnummern kleiner als 1024.
  • CAP_KILL:Berechtigungsprüfungen umgehen, um Signale an Prozesse wie SIGHUP und SIGKILL zu senden.
  • CAP_SYS_NICE:Ändern Sie unter anderem den Niceness-Wert und die Scheduling-Priorität von Prozessen.
  • CAP_SYS_RESOURCE:Ermöglicht das Überschreiben verschiedener Limits für Systemressourcen, wie z. B. Festplattenkontingente, CPU-Zeitlimits usw.

Die vollständige Liste ist auf der Handbuchseite zu Capabilities(7) verfügbar.

Dateien können Fähigkeiten in 3 verschiedenen Sätzen zugewiesen werden:erlaubt, vererbbar und wirksam. Threads haben 2 zusätzliche Sets:Umgebungs- und Bounding-Sets. Jeder Satz kann null oder mehr Fähigkeiten enthalten, mit Ausnahme des effektiven Satzes für Dateien, der eigentlich ein einzelnes Bit ist. Diese Sätze definieren komplexe Kernel-Verhaltensweisen, die den Rahmen dieses Leitfadens sprengen würden. Beim Zuweisen von Funktionen zu Dateien verwenden wir in den meisten Fällen die zulässigen und effektiven Sätze.

HINWEIS:SELinux kann die Funktionen beeinträchtigen. Auf Systemen mit SELinux im Erzwingungsmodus kann es Prozesse daran hindern, ihre Fähigkeiten zu nutzen.

Erforderliche Tools

Es gibt zwei verschiedene Pakete für das Capability Management:libcap und libcap-ng. Letzteres soll einfacher sein als Ersteres. Beides wird in diesem Handbuch behandelt.

libcap bietet getcap und setcap zum Anzeigen und Einstellen von Dateifunktionen, während libcap-ng beide Funktionen in einem Tool, filecap, konsolidiert.

libcap

Installation

Auf Debian, Ubuntu und anderen Debian-basierten Distributionen können die libcap-Dienstprogramme installiert werden mit:

apt update
apt install libcap2-bin

Verwenden Sie zur Installation unter CentOS den folgenden Befehl:

yum install libcap

Um auf Fedora zu installieren, verwenden Sie den folgenden Befehl:

dnf install libcap

Um auf Arch zu installieren, verwenden Sie den folgenden Befehl:

pacman -Sy libcap

Nutzung

getcap zeigt einfach die einer Datei zugewiesenen Fähigkeiten an, falls vorhanden. Verwenden Sie die folgende Syntax:

getcap /path/to/binary

Zum Beispiel:

Getcap kann auch rekursiv mit dem Flag -r suchen. Zum Beispiel:

HINWEIS:2>/dev/null wird verwendet, um zu vermeiden, dass die Ausgabe mit „Operation nicht unterstützt“-Fehlern überladen wird, die auftreten, wenn getcap versucht, die Fähigkeiten von Dateien in /sys, /proc usw. abzurufen. Diese speziellen virtuellen Dateisysteme werden nicht unterstützt Fähigkeiten.

Verwenden Sie die folgende Syntax, um Dateifunktionen mit setcap festzulegen:

setcap CAP+set filename

Um beispielsweise CAP_CHOWN und CAP_DAC_OVERRIDE zu den zulässigen und effektiven Sätzen hinzuzufügen, verwenden Sie:

setcap CAP_CHOWN,CAP_DAC_OVERRIDE+ep file1

Um Fähigkeiten aus einer Datei zu entfernen, verwenden Sie das Flag -r:

setcap -r filename

Hier sind ein paar zusätzliche Beispiele:

libcap-ng

Installation

Zur Installation auf Debian, Ubuntu und anderen Debian-basierten Distributionen:

apt update
apt install libcap-ng-utils

So installieren Sie auf CentOS:

yum install libcap-ng-utils

Zur Installation auf Fedora:

dnf install libcap-ng-utils

So installieren Sie auf Arch:

pacman -Sy libcap-ng

Nutzung

  • Das Programm filecap bezieht sich auf Fähigkeiten ohne das Präfix "CAP_" (zB NET_ADMIN statt CAP_NET_ADMIN).
  • filecap arbeitet nicht mit relativen Pfaden, es erwartet den vollständigen Pfad, wenn Dateien oder Verzeichnisse als Argumente übergeben werden.
  • filecap erlaubt Ihnen nicht, Capability-Sets anzugeben, es verwendet beim Setzen von Capabilities immer die zulässigen und effektiven.

So zeigen Sie die einer Datei zugewiesenen Funktionen an:

filecap /full/path/to/file

Um ein Verzeichnis rekursiv zu durchsuchen, verwenden Sie:

filecap /full/path/to/dir

Um das gesamte Dateisystem mit filecap zu durchsuchen, verwenden Sie einen der folgenden Befehle:

filecap /
filecap -a

Hier sind ein paar Beispiele für die Verwendung von filecap zum Untersuchen von Dateien und Verzeichnissen:

Verwenden Sie zum Festlegen einer Funktion für eine Datei die folgende Syntax:

filecap /full/path/to/file cap_name

Zum Beispiel:

filecap /usr/bin/tac dac_override

Um Funktionen zu entfernen, verwenden Sie diese Syntax:

filecap /full/path/to/file none

Hier sind ein paar Beispiele für das Setzen und Entfernen von Fähigkeiten mit filecap:

Schlussfolgerung

Capabilities sind eine leistungsstarke Kernel-Funktion mit breiten Sicherheitsanwendungen. Sie sollten, wann immer möglich, volle Rechte und Root-SUID ersetzen.


Linux
  1. So verwalten Sie das Kontopasswort in Linux

  2. So finden Sie eine Datei in Linux

  3. So erstellen Sie einen Swap unter Linux

  4. So erstellen Sie eine Auslagerungsdatei unter Linux

  5. So leeren Sie eine Protokolldatei unter Linux

So benennen Sie eine Datei (en) in Linux um

So verwalten Sie das Linux-Dateisystem auf Ubuntu Server

So verknüpfen Sie eine Datei unter Linux per Symlink

So verschlüsseln Sie Dateien unter Linux

So deaktivieren Sie Swap unter Linux

Wie verwende ich gzip unter Linux?