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