Wie Label ich eine neu erstellte Datei mit "system_u"?
Ein "vorübergehender" Labelwechsel erfolgt über den chcon-Befehl:
bash-4.2# touch freetds.conf.new bash-4.2# ls -lZ freetds.conf.new -rw-r–r–. root root unconfined_u:object_r:etc_t:s0 freetds.conf.new bash-4.2# chcon -t etc_t -u system_u freetds.conf.new bash-4.2# ls -lZ freetds.conf.new -rw-r–r–. root root system_u:object_r:etc_t:s0 freetds.conf.new |
Eine dauerhafte Änderung würde über den Befehl semanage erfolgen. Dadurch wird eine Zeile in /etc/selinux/targeted/contexts/files/file_contexts.local hinzugefügt (oder geändert), die dann mit restorecon angewendet werden kann.
Fangen wir also nochmal mit einer neuen Datei an:
bash-4.2# rm freetds.conf.new bash-4.2# touch freetds.conf.new bash-4.2# ls -lZ freetds.conf.new -rw-r–r–. root root unconfined_u:object_r:etc_t:s0 freetds.conf.new |
Dafür können wir eine Regel hinzufügen:
bash-4.2# semanage fcontext -a -t etc_t -s system_u /etc/freetds.conf.new bash-4.2# cat /etc/selinux/targeted/contexts/files/file_contexts.local # This file is auto-generated by libsemanage # Do not edit directly. /etc/freetds.conf.new system_u:object_r:etc_t:s0 |
Dies hat die Datei jedoch noch nicht geändert
bash-4.2# ls -lZ freetds.conf.new -rw-r–r–. root root unconfined_u:object_r:etc_t:s0 freetds.conf.new |
Also wenden wir es jetzt an:
bash-4.2# restorecon -vF /etc/freetds.conf.new restorecon reset /etc/freetds.conf.new context unconfined_u:object_r:etc_t:s0->system_u:object_r:etc_t:s0 bash-4.2# ls -lZ /etc/freetds.conf.new -rw-r–r–. root root system_u:object_r:etc_t:s0 /etc/freetds.conf.new |
ETA: Wenn Sie die freetds.conf.new nach der Aktualisierung in die freetds.conf kopieren, würde ich wahrscheinlich beim chcon-Befehl bleiben; Es ist einfacher und der vorhandene Regelsatz übernimmt die Umbenennung, wenn er den richtigen Namen hat. Ich würde die Semanage-Form nur verwenden, wenn dies der endgültige Name sein soll.