Eigenes Programm
#include <unistd.h>
#include <stdio.h>
FILE *f;
int main(void)
{
while(1) {
f = fopen("/var/log/messages","w");
sleep(5);
fclose(f);
}
}
Kompilieren
- gcc -o mydaemon mydaemon.c
Kopieren
- cp mydaemon /usr/local/sbin
System Dienst
- cat /etc/systemd/system/mydaemon.service
[Unit]
Description=Simple testing daemon
[Service]
Type=simple
ExecStart=/usr/local/bin/mydaemon
[Install]
WantedBy=multi-user.target
Systemctl status
- systemctl start mydaemon
- systemctl status mydaemon
Check that the new daemon is not confined by SELinux
system_u:system_r:unconfined_service_t:s0 root 5812 1 0 15:41 ? 00:00:00 /usr/local/bin/mydaemon
Generieren Sie eine benutzerdefinierte Richtlinie für den Daemon
- sepolicy generate --init /usr/local/bin/mydaemon
Created the following files:
/etc/systemd/system/mydaemon.te # Type Enforcement file
/etc/systemd/system/mydaemon.if # Interface file
/etc/systemd/system/mydaemon.fc # File Contexts file
/etc/systemd/system/mydaemon_selinux.spec # Spec file
/etc/systemd/system/mydaemon.sh # Setup Script
Erstellen Sie die Systemrichtlinie mit dem neuen Richtlinienmodul mithilfe des mit dem vorherigen Befehl erstellten Setup-Skripts neu
Building and Loading Policy
+ make -f /usr/share/selinux/devel/Makefile mydaemon.pp
Compiling targeted mydaemon module
Creating targeted mydaemon.pp policy package
rm tmp/mydaemon.mod tmp/mydaemon.mod.fc
+ /usr/sbin/semodule -i mydaemon.pp
+ sepolicy manpage -p . -d mydaemon_t
./mydaemon_selinux.8
+ /sbin/restorecon -F -R -v /usr/local/bin/mydaemon
Relabeled /usr/local/bin/mydaemon from unconfined_u:object_r:bin_t:s0 to system_u:object_r:mydaemon_exec_t:s0
++ pwd
+ pwd=/etc/systemd/system
+ rpmbuild --define '_sourcedir /etc/systemd/system' --define '_specdir /etc/systemd/system' --define '_builddir /etc/systemd/system' --define '_srcrpmdir /etc/systemd/system' --define '_rpmdir /etc/systemd/system' --define '_buildrootdir /etc/systemd/system/.build' -ba mydaemon_selinux.spec
./mydaemon.sh: line 52: rpmbuild: command not found
Starten Sie den Daemon neu und überprüfen Sie, ob er jetzt von SELinux eingeschränkt ausgeführt wird
- systemctl restart mydaemon
- ps -efZ | grep mydaemon
Links