[FIX] script todo: service Odoo dev — SELinux permissif (unconfined inefficace)
« SELinuxContext=unconfined_u:unconfined_r:unconfined_t:s0 » ne débloque PAS l'exécution : la transition init_t -> unconfined_t est refusée par la politique -> le service échouait toujours en 203/EXEC (« Permission denied » sur run.sh, contexte user_home_t) sur Fedora. En DEV (VM jetable, « SELinux relâché ») on passe désormais SELinux en PERMISSIF (setenforce 0 + persistance dans /etc/selinux/config) si actif -> le service exécute run.sh/venv sous /home sans blocage. PROD reste confiné (/opt/erplibre hors user_home_t + restorecon) — à peaufiner quand on reviendra sur la prod. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
233fdf2d2b
commit
19c5f41751
1 changed files with 12 additions and 10 deletions
|
|
@ -3080,26 +3080,28 @@ class TODO:
|
||||||
"""Snippet shell (exécuté dans la VM) qui installe ERPLibre/Odoo comme
|
"""Snippet shell (exécuté dans la VM) qui installe ERPLibre/Odoo comme
|
||||||
service systemd puis l'active. N'est ajouté QUE pour les profils Odoo.
|
service systemd puis l'active. N'est ajouté QUE pour les profils Odoo.
|
||||||
|
|
||||||
DEV : ERPLibre sous ~/home ; si SELinux est actif (Fedora), on lève le
|
DEV : ERPLibre sous ~/home. Un service système ne peut PAS exécuter
|
||||||
confinement du service (unconfined) — un service système ne peut pas
|
du user_home_t sous SELinux, et « SELinuxContext=unconfined » ne suffit
|
||||||
exécuter du user_home_t. Acceptable pour une VM de dev.
|
pas (transition init_t -> unconfined_t refusée -> toujours 203/EXEC).
|
||||||
|
Sur une VM de dev jetable, on passe donc SELinux en PERMISSIF (relâché).
|
||||||
PROD : ERPLibre sous /opt/erplibre (hors user_home_t) -> le service
|
PROD : ERPLibre sous /opt/erplibre (hors user_home_t) -> le service
|
||||||
reste CONFINÉ par SELinux ; on restaure les contextes (restorecon)."""
|
reste CONFINÉ par SELinux ; on restaure les contextes (restorecon)."""
|
||||||
svc_dir = self._qemu_install_dir(prod)
|
svc_dir = self._qemu_install_dir(prod)
|
||||||
|
selinux_shell = 'SELINUX_LINE=""; ' # pas de SELinuxContext (inefficace)
|
||||||
if prod:
|
if prod:
|
||||||
pre = (
|
pre = (
|
||||||
"command -v restorecon >/dev/null 2>&1 && "
|
"command -v restorecon >/dev/null 2>&1 && "
|
||||||
"sudo restorecon -R /opt/erplibre >/dev/null 2>&1 || true; "
|
"sudo restorecon -R /opt/erplibre >/dev/null 2>&1 || true; "
|
||||||
)
|
)
|
||||||
selinux_shell = 'SELINUX_LINE=""; ' # confiné : pas d'unconfined
|
|
||||||
else:
|
else:
|
||||||
pre = ""
|
# DEV : SELinux permissif (persistant) si actif -> le service peut
|
||||||
selinux_shell = (
|
# exécuter run.sh/venv sous /home.
|
||||||
'SELINUX_LINE=""; '
|
pre = (
|
||||||
"if command -v getenforce >/dev/null 2>&1 && "
|
"if command -v getenforce >/dev/null 2>&1 && "
|
||||||
'[ "$(getenforce)" != "Disabled" ]; then '
|
'[ "$(getenforce)" = "Enforcing" ]; then '
|
||||||
'SELINUX_LINE="SELinuxContext=unconfined_u:unconfined_r:'
|
"sudo setenforce 0 || true; "
|
||||||
'unconfined_t:s0"; fi; '
|
"sudo sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' "
|
||||||
|
"/etc/selinux/config 2>/dev/null || true; fi; "
|
||||||
)
|
)
|
||||||
return (
|
return (
|
||||||
f'SVC_USER=$(whoami); SVC_GROUP=$(id -gn); SVC_DIR="{svc_dir}"; '
|
f'SVC_USER=$(whoami); SVC_GROUP=$(id -gn); SVC_DIR="{svc_dir}"; '
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue