role user_r types passwd_t;Diese Anweisung deklariert zunächst die Rolle user_r falls sie noch nicht in der Policy existieren sollte. Außerdem erlaubt die Anweisung der Rolle user_r die Domäne passwd_t zu nutzen.
Wie werden denn nun die Rollen verwaltet? Welcher Benutzer darf welche Rollen nutzen? Das ist die Aufgabe der SELinux-Benutzerverwaltung. Hierzu gibt es die Benutzerdeklarationen, die Sie mit dem Befehl semanage anzeigen können.
[root@supergrobi modules]# semanage user -l
Labeling MLS/ MLS/
SELinux User Prefix MCS Level MCS Range SELinux Roles
root user s0 SystemLow-SystemHigh system_r sysadm_r staff_r
staff_u staff s0 SystemLow-SystemHigh sysadm_r staff_r
sysadm_u sysadm s0 SystemLow-SystemHigh sysadm_r
system_u user s0 SystemLow-SystemHigh system_r
user_u user s0 SystemLow-SystemHigh user_r
Wir ignorieren für einen Moment (bis zum nächsten Abschnitt) noch die
Spalten MLS/MCS. Die weiteren Spalten definieren, welcher
Benutzer welche Rollen nutzen darf. Der SELinux-Benutzer root darf die
SELinux Rollen system_r, sysadm_r und staff_r verwenden. Der SELinux-Benutzer system_u hat lediglich
Zugriff auf die Rolle system_r, genauso wie der
SELinux-Benutzer user_u auch nur Zugriff auf die Rolle
user_r hat.
SELinux ordnet jetzt die Linux-Benutzer den SELinux-Benutzern zu. Systemdienste erhalten den Benutzer system_u. Die weiteren Benutzer werden bei ihrem Login zugewiesen. Hierzu verwendet SELinux das folgende Mapping:
[root@supergrobi ~]# semanage login -l Login Name SELinux User MLS/MCS Range __default__ user_u s0 root root SystemLow-SystemHighBei dem Benutzer root lautet der SELinux-Benutzername gleich dem Linux-Benutzernamen. Alle weiteren Benutzer erhalten den SELinux-Benutzer user_u. Damit ist festgelegt, welche Rollen sie benutzen dürfen. Möchten Sie zum Beispiel, dass ein bestimmter Benutzer auch die Rolle sysadm_r benutzen darf, können Sie dies folgendermaßen erreichen:
[root@supergrobi ~]# semanage user -R "sysadm_r user_r" -P user -a ralf_u [root@supergrobi ~]# semanage login -s ralf_u -a ralfDer erste Befehl erzeugt den SELinux-Benutzer ralf_u und weist diesem die Rollen sysadm_r und user_r zu. Der zweite Befehl erzeugt das Mapping für den Login, so dass SELinux dem Linux-Benutzer ralf bei der Anmeldung den SELinux-Benutzer ralf_u zuweist. Dies lässt sich nach einer Anmeldung auch verifizieren:
[ralf@supergrobi ~]$ id -Z ralf_u:user_r:user_t [ralf@supergrobi ~]$ newrole -r sysadm_r Authentifiziere ralf. Passwort: [ralf@supergrobi ~]$ id -Z ralf_u:sysadm_r:sysadm_t
Die hier verwendeten Befehle id und newrole(siehe auch 26.15) wurden noch nicht erwähnt und sollen kurz erklärt werden:
Ralf Spenneberg 2007-11-13