semanage
Dies ist der zentrale Befehl zur Verwaltung der
SELinux-Reference-Policy. Gemeinsam mit dem Befehl semodule (siehe 26.26)
führen Sie alle administrativen Tätigkeiten mit diesem Befehl durch.
Dabei können wesentliche Bestandteile der Policy mit diesem Befehl
erweitert werden, ohne das, wie bei der Example-Policy, eine erneute
Übersetzung der gesamten Policy erforderlich ist.
Sie können mit diesem Befehl SELinux Benutzer anlegen, die Zuordnung
der Linux und SELinux Benutzer definieren, Security-Contexts für
Dateien, Ports etc. erweitern.
Hierzu unterstützt der Befehl eine Vielzahl von Optionen, die zunächst
vorgestellt werden. Im Anschluss werden einige Beispiele der Anwendung
gezeigt.
- -a, -add
- Hiermit können Sie ein Objekt zur Policy
hinzufügen. Ein Objekt ist entweder ein Linux-Benutzer, ein
SELinux-Benutzer, eine Datei oder ein Port.
- -d, -delete
- Hiermit löschen Sie ein Objekt.
- -f, -ftype
- Diese Option gibt den File-Type an.
- -l, -list
- Hiermit zeigen Sie die Objekte an.
- -L, -level
- Hiermit geben Sie einen Security-Level an.
- -m, -modify
- Dies ändert ein Objekt
- -n, -noheading
- Dies unterdrückt die Ausgabe der
Titelzeile im Listing.
- -p, -proto
- Hiermit gegeben Sie das Protokoll und den
Port an.
- -r, -range
- Hiermit geben Sie einen MLS-Bereich an.
- -R, -role
- Dies erlaubt die Angabe der Rolle. Mehrere
Rollen müssen Sie in Anführungszeichen setzen.
- -P, -prefix
- Hiermit können Sie bei Benutzern einen
Prefix angeben, der den Typen home_dir_t und
home_t vorangestellt wird.
- -s, -seuser
- Dies ist der SELinux Benutzername.
- -t, -type
- Dies ist der Type des Objekts.
- -T, -trans
- Dies ist eine SELinux Translation.
Zusätzlich zu diesen Optionen verlangt der Befehl semanage auch
die Angabe der Objektart, die verwaltet werden soll:
- login
- Diese Objekte weisen einem Linux-Benutzer einen
SELinux User und seinen MLS/MCS-Bereich zu.
# semanage login -l
Login Name SELinux User MLS/MCS Range
__default__ user_u s0
root root SystemLow-SystemHigh
- user
- Diese Objekte weisen einem SELinux-Benutzer seine
möglichen Rollen, den Labeling-Prefix und MLS/MCS-Level und Bereiche zu.
# semanage user -l
Labeling MLS/ MLS/
SELinux User Prefix MCS Level MCS Range SELinux Roles
root user s0 SystemLow-SystemHigh system_r sysadm_r user_r
system_u user s0 SystemLow-SystemHigh system_r
user_u user s0 SystemLow-SystemHigh system_r sysadm_r user_r
- port
- Hiermit werden einzelnen TCP- und UDP-Ports SELinux
Typen zugewiesen.
# semanage port -l
SELinux Port Type Proto Port Number
afs_bos_port_t udp 7007
afs_fs_port_t tcp 2040
...
- interface
- Hiermit können einzelnen Netzwerkkarten Contexte zugewiesen werden. Dies wird aktuell noch nicht von den
Richtlinien genutzt.
- fcontext
- Hiermit können Sie den Security-Context einer Datei
anzeigen und modifizieren. Dies ist die häufigste Verwendung des
Befehls.
# semanage fcontext -l | head
SELinux fcontext type Context
/.* all files system_u:object_r:default_t:s0
/xen(/.*)? all files system_u:object_r:xen_image_t:s0
...
- translation
- Dies zeigt und modifiziert die
SELinux-Translation. Eine Translation ist die Übersetzung
eines numerischen
SELinux Levels in einen sinnvollen Namen.
# semanage translation -l
Level Translation
s0
s0-s0:c0.c1023 SystemLow-SystemHigh
s0:c0.c1023 SystemHigh
Im folgenden werde ich eine typische Verwendungen des Befehls
semanage zeigen. Diese sollen Ihnen einen Eindruck vermitteln,
wann und zu welchem Zweck Sie den Befehl anwenden können.
Verfügt Ihre Distribution nicht über diesen Befehl, da sie
die Example-Policy und nicht die Reference-Policy einsetzt, so
müssen Sie für die folgenden Verwaltungschritte die Policy editieren
und neu übersetzen. Eigentlich macht dieser Befehl auch nichts
anderes.
Ein Nachteil des Befehls soll nicht verschwiegen werden. Leider können
Sie mit dem Befehl nicht durch die Policy festgelegte Einstellungen
verändern. Sie können lediglich Benutzer, Dateien und Ports
hinzufügen. Ein Löschen dieser Informationen ist nur dann möglich,
wenn Sie diese auch mit dem Befehl hinzugefügt haben. Durch die Policy
definierte Daten können Sie nicht löschen. Der Befehl quittiert dass
mit einem Fehler:
# semanage port -d -p tcp 22
/usr/sbin/semanage: Port tcp/22 ist in der Richtlinie festgelegt und kann nicht entfernt werden
Unterabschnitte
Ralf Spenneberg
2007-11-13