J'ai beaucoup lu à ce sujet mais je ne sais toujours pas pourquoi cela ne fonctionne pas. pour autant que je sache, tous les répertoires ont la bonne autorisation et même si tout est 777, je reçois toujours une autorisation refusée lorsque j'essaie d'exécuter ce programme en tant que service. le programme que j'essaie d'exécuter en tant que servoce s'appelle xTeVe. J'ai essayé de l'exécuter sous tous les répertoires, utilisateurs, et rien ne semble fonctionner.
Voici le fichier de l'unité:
[Unit]
Description=XTeVe For Plex
After=network.target network-online.target
[Service]
ExecStart=/root/IPTV/xteve
user=root
Restart=on-failure
RestartSec=5
StartLimitInterval=60s
StartLimitBurst=3
[Install]
WantedBy=multi-user.target
Je sais que cela ne devrait pas être exécuté en tant que root, mais ce n'est que le dernier utilisateur que j'ai essayé
Et quand j'essaie de démarrer le service, j'obtiens ceci:
14:20 xteve.service: Failed with result 'exit-code'.
14:02 xteve.service: Main process exited, code=exited, status=203/EXEC
14:02 xteve.service: Failed at step EXEC spawning /root/IPTV/xteve: Permission denied
14:02 xteve.service: Failed to execute command: Permission denied
14:02 Started XTeVe For Plex.
Et voici les autorisations de fichier:
[root@skynet IPTV]# ls -la
total 12084
drwxr-xr-x. 2 root root 19 Mar 6 13:58 .
dr-xr-x---. 5 root root 175 Mar 6 13:58 ..
-rwxr-xr-x. 1 root root 12370316 Mar 6 13:58 xteve
Résultat de file
:
[root@skynet IPTV]# file xteve
xteve: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, Go BuildID=lt4S9w02Ylf_MXsFeRkj/jdmwTx5YSsQSDaa6tfuz/vCzfZlCyl5qUEBD7IuD0/AEI-OmWm1iNuziWA7R0P, with debug_info, not stripped
Sortie de cat audit.log | grep xteve
:
type=AVC msg=audit(1551898814.098:1342): avc: denied { execute } for pid=11002 comm="(xteve)" name="xteve" dev="dm-0" ino=30958 scontext=system_u:system_r:init_t:s0 tcontext=unconfined_u:object_r:admin_home_t:s0 tclass=file permissive=0
type=SERVICE_STOP msg=audit(1551898814.100:1343): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=xteve comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=failed'UID="root" AUID="unset"
type=SERVICE_START msg=audit(1551898814.420:1344): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=xteve comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'UID="root" AUID="unset"
type=SERVICE_STOP msg=audit(1551898814.420:1345): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=xteve comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'UID="root" AUID="unset"
type=SERVICE_START msg=audit(1551898966.689:1385): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=xteve comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=?res=success'UID="root" AUID="unset"
Choses que j'ai essayées mais qui n'ont pas fonctionné:
échec de systemd à l'étape du script de génération EXEC: autorisation refusée
service personnalisé systemd: échec à la génération de l'étape EXEC… Autorisation refusée
"Échec lors de la génération de l'étape EXEC" même avec les autorisations de groupe appropriées
SELinux vous empêche d'exécuter un service système où le binaire se trouve dans le répertoire personnel d'un utilisateur ou, dans votre cas, le répertoire personnel de l'utilisateur racine.
Pour résoudre le problème, copiez le binaire dans un répertoire approprié tel que /usr/local/bin
et appelez-le à partir de là.