
Ich schreibe Code, der SELinux-fähig ist. Ich bin neu in diesem Sicherheitsmodul und habe eine steile Lernkurve vor mir.
Damit mein Code in einer SELinux-Umgebung funktioniert, muss ich Dateien umbenennen können. Ich mounte beispielsweise temporäre Dateisysteme und möchte nach dem Mounten die ursprüngliche Bezeichnung wiederherstellen.
Für die Bereitstellung muss ich natürlich Root sein (über CAP_SYS_ADMIN-Berechtigungen verfügen), aber muss ich auch für die Neubenennung Root sein?
Unter Fedora darf ich Dateien, deren Eigentümer ich bin, umbenennen. Als nicht privilegierter Benutzer kann ich beispielsweise Folgendes tun:
$ touch /tmp/test
$ ls -Z /tmp/test
unconfined_u:object_r:user_tmp_t:s0 /tmp/test
$ chcon system_u:object_r:etc_t:s0 /tmp/test
$ ls -Z /tmp/test
system_u:object_r:etc_t:s0 /tmp/test
Offenbar besteht keine Berechtigung zum Umbenennen von Dateien, die einem anderen Benutzer gehören.
Aber jetzt habe ich folgendes in der RedHat gefundenHandbuch:
Die SELinux-Richtlinie steuert, ob Benutzer den SELinux-Kontext für eine bestimmte Datei ändern können.
was darauf hindeutet, dass dieses Verhalten tatsächlich konfigurierbar ist und ich mich nicht darauf verlassen kann, Dateien, deren Eigentümer ich bin, umbenennen zu können.
BEARBEITEN:
Es scheint, dass Fedora dies mithilfe von implementiert constraints
.
# dnf install setools-console
# seinfo --constrain
...
constrain file {relabelto create relabelfrom } (u1 == u2 or ( t1 == can_change_object_identity ));
...