Sur un systeme Tumbleweed avec SELinux activé comment rendre exécutable le logiciel kdrive au format appimage
Yesterday 4:18pm

Pour rendre exécutable un fichier AppImage (comme kdrive) sur openSUSE Tumbleweed avec SELinux activé, voici les étapes à suivre :


1. Rendre le fichier exécutable

Par défaut, les fichiers téléchargés ne sont pas exécutables. Utilise la commande suivante :

bash
chmod +x /chemin/vers/kdrive.AppImage

2. Vérifier le contexte SELinux

SELinux peut bloquer l'exécution si le contexte de sécurité n'est pas correct. Vérifie le contexte actuel :

bash
ls -Z /chemin/vers/kdrive.AppImage

Si le contexte n'est pas adapté (par exemple, unconfined_u:object_r:user_home_t:s0), tu peux le changer avec :

bash
chcon -t bin_t /chemin/vers/kdrive.AppImage

3. Autoriser l'exécution dans SELinux

Si SELinux bloque toujours l'exécution, tu peux ajouter une règle temporaire pour autoriser l'exécution des AppImage :

bash
sudo setsebool -P allow_execheap 1

Si cela ne suffit pas, tu peux aussi essayer :

bash
sudo setsebool -P allow_execstack 1

4. Lancer l'AppImage

Essaie de lancer le logiciel :

bash
./kdrive.AppImage

5. Vérifier les logs SELinux

Si l'exécution échoue, consulte les logs SELinux pour identifier le problème :

bash
sudo ausearch -m avc -ts recent

Ou utilise audit2allow pour générer une politique personnalisée si nécessaire.


Résumé des commandes utiles

chmod +x kdrive.AppImage
Rend le fichier exécutable
chcon -t bin_t kdrive.AppImage
Change le contexte SELinux
setsebool -P allow_execheap 1
Autorise l'exécution de binaires non standard
ausearch -m avc -ts recent
Affiche les erreurs SELinux récentes

As-tu déjà essayé ces étapes ? Si oui, quel message d'erreur obtiens-tu lors du lancement de l'AppImage ? Cela m'aidera à t'orienter plus précisément.

Yesterday 4:18pm
ls -Z kDrive-3.7.9.1-amd64.AppImage
system_u:object_r:dosfs_t:s0 kDrive-3.7.9.1-amd64.AppImage
Yesterday 4:21pm

Merci pour cette précision. Le contexte SELinux actuel de ton fichier AppImage est dosfs_t, ce qui signifie qu’il est marqué comme provenant d’un système de fichiers DOS/Windows (par exemple, une clé USB ou un partage réseau monté en FAT/NTFS). Cela peut empêcher son exécution directe sous SELinux.

Solution : Changer le contexte SELinux

Pour que l’AppImage puisse s’exécuter, il faut lui attribuer un contexte plus adapté, comme bin_t (pour les binaires exécutables) ou user_home_t (si le fichier est dans ton répertoire personnel).

1. Changer le contexte pour bin_t (recommandé pour les binaires) :

bash
sudo chcon -t bin_t kDrive-3.7.9.1-amd64.AppImage

2. Si le fichier est dans ton répertoire personnel, tu peux aussi utiliser user_home_t :

bash
sudo chcon -t user_home_t kDrive-3.7.9.1-amd64.AppImage

3. Vérifie le nouveau contexte :

bash
ls -Z kDrive-3.7.9.1-amd64.AppImage

Tu devrais voir quelque chose comme :

unconfined_u:object_r:bin_t:s0 kDrive-3.7.9.1-amd64.AppImage

4. Essaie de lancer l’AppImage :

bash
./kDrive-3.7.9.1-amd64.AppImage

Si ça ne fonctionne toujours pas :

  • Vérifie les logs SELinux avec :
    bash
    sudo ausearch -m avc -ts recent
  • Si SELinux bloque toujours, tu peux essayer de mettre le fichier dans /usr/local/bin/ et refaire un chcon.

Dis-moi si tu obtiens une erreur après ces manipulations, ou si l’AppImage se lance correctement !

Yesterday 4:21pm
ls -Z kDrive-3.7.9.1-amd64.AppImage donne system_u:object_r:user_home_t:s0 kDrive-3.7.9.1-amd64.AppImage
Yesterday 4:23pm

Merci pour cette mise à jour. Maintenant que le contexte SELinux est user_home_t, cela signifie que le fichier est correctement marqué pour être dans ton répertoire personnel, mais cela ne suffit pas toujours pour exécuter un AppImage sous SELinux.

Prochaines étapes pour résoudre le problème :

1. Vérifier que le fichier est bien exécutable :

bash
chmod +x kDrive-3.7.9.1-amd64.AppImage

2. Autoriser explicitement l'exécution des fichiers dans le répertoire personnel :

SELinux peut bloquer l'exécution de binaires depuis /home/. Pour contourner cela, tu peux :

  • Soit déplacer le fichier dans /usr/local/bin/ et appliquer le bon contexte :
    bash
    sudo mv kDrive-3.7.9.1-amd64.AppImage /usr/local/bin/ sudo chcon -t bin_t /usr/local/bin/kDrive-3.7.9.1-amd64.AppImage
  • Soit autoriser temporairement l'exécution depuis /home/ avec :
    bash
    sudo setsebool -P allow_execmod 1 sudo setsebool -P allow_execheap 1

3. Vérifier les logs SELinux en cas d'échec :

Si l'AppImage ne se lance toujours pas, consulte les logs pour voir ce que SELinux bloque :

bash
sudo ausearch -m avc -ts recent

Tu peux aussi utiliser audit2allow pour générer une politique personnalisée si nécessaire.


Essaie ces solutions et dis-moi si tu obtiens une erreur précise lors du lancement de l'AppImage ! Je t’aiderai à interpréter le message et à ajuster la configuration.

Yesterday 4:23pm
Après sudo setsebool -P allow_execmod 1
sudo setsebool -P allow_execheap 1
ça ne fonctionne toujours pas. Les logs sudo ausearch -m avc -ts recent
----
time->Mon Jan 26 17:22:56 2026
type=AVC msg=audit(1769444576.809:168): avc: denied { execstack } for pid=6037 comm="AppRun.wrapped" scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tclass=process permissive=0
----
time->Mon Jan 26 17:25:05 2026
type=AVC msg=audit(1769444705.018:169): avc: denied { execstack } for pid=6211 comm="AppRun.wrapped" scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tclass=process permissive=0
----
time->Mon Jan 26 17:25:36 2026
type=AVC msg=audit(1769444736.547:188): avc: denied { execstack } for pid=6248 comm="AppRun.wrapped" scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tclass=process permissive=0
Yesterday 4:26pm

D’après les logs SELinux, le problème vient du fait que l’AppImage essaie d’exécuter du code avec une pile exécutable (execstack), ce qui est bloqué par SELinux, même après avoir activé allow_execmod et allow_execheap.

Solution ciblée :

1. Autoriser explicitement execstack pour ce processus

Tu peux créer une politique SELinux personnalisée pour autoriser cette action uniquement pour ton AppImage :

bash
sudo grep "AppRun.wrapped" /var/log/audit/audit.log | audit2allow -M kdrive_execstack sudo semodule -i kdrive_execstack.pp

2. Vérifier que la politique est bien appliquée

Relance l’AppImage et vérifie à nouveau les logs. Si tout est correct, l’erreur execstack ne devrait plus apparaître.


Explication :

  • audit2allow génère une politique SELinux à partir des refus enregistrés dans les logs.
  • semodule -i installe cette politique, ce qui permet à SELinux d’autoriser l’action execstack pour ton AppImage.

Essaie cette solution et dis-moi si l’AppImage se lance correctement maintenant ! Si tu as encore des erreurs, partage les nouveaux logs pour que je puisse t’aider à affiner la configuration.

Yesterday 4:26pm
cette solution fonctionne correctement. Est-elle définitive ou seulement pour cette session.
Yesterday 4:30pm

La solution que tu as appliquée avec audit2allow et semodule -i kdrive_execstack.pp est définitive : la politique SELinux personnalisée reste active même après un redémarrage du système.

Pourquoi ?

  • Le module kdrive_execstack.pp est installé dans la base de données SELinux.
  • Il ne sera pas supprimé automatiquement, sauf si tu le désinstalles manuellement ou si tu réinitialises toute la configuration SELinux.

Si tu veux supprimer cette règle plus tard :

bash
sudo semodule -r kdrive_execstack

En résumé :

  • Définitif : Oui, la règle persiste après redémarrage.
  • Modifiable : Tu peux la supprimer ou la mettre à jour si besoin.

N’hésite pas si tu as d’autres questions sur la gestion de SELinux ou des AppImage !

Yesterday 4:30pm
ça n'affecte en rien la sécurité du pc ? Est-ce que cette règle est valable QUE pour kdrive ou pour tous les logiciels appimage ?
Yesterday 4:31pm

1. Impact sur la sécurité

La règle que tu as créée avec audit2allow est très ciblée :

  • Elle autorise uniquement l’action execstack (exécution de code sur la pile) pour le processus AppRun.wrapped, c’est-à-dire ton AppImage kdrive.
  • Elle ne désactive pas SELinux globalement, ni ne rend ton système vulnérable à d’autres attaques.

Risque limité :

  • L’exécution de code sur la pile (execstack) est normalement bloquée car c’est une technique parfois utilisée par des logiciels malveillants.
  • Cependant, dans le cas d’un AppImage de confiance (comme kdrive), le risque est minime, car tu as toi-même téléchargé et vérifié le fichier.

2. Portée de la règle

  • Cette règle ne s’applique qu’à kdrive (ou plus précisément au processus AppRun.wrapped de cet AppImage).
  • Elle n’affecte pas les autres AppImage ou logiciels sur ton système.

3. Bonnes pratiques supplémentaires

  • Vérifie toujours la provenance de tes AppImage.
  • Mets à jour régulièrement ton système et SELinux.
  • Si tu n’utilises plus kdrive, tu peux supprimer la règle avec :
    bash
    sudo semodule -r kdrive_execstack

En résumé :

  • Sécurité : Risque très faible, car la règle est spécifique à kdrive.
  • Portée : Uniquement pour kdrive, pas pour les autres AppImage.

Si tu veux une sécurité maximale, tu peux aussi essayer de contacter les développeurs de kdrive pour qu’ils corrigent leur AppImage afin qu’il ne nécessite pas execstack. Mais dans l’immédiat, ta solution est sûre et efficace !

Yesterday 4:31pm
après une mise à jour de kdrive, cette règle sera toujours valable (le numéro de version aura changé évidemment)
Yesterday 4:34pm

Lorsque tu mets à jour kDrive (par exemple, en passant de la version 3.7.9.1 à une version ultérieure), la règle SELinux personnalisée que tu as créée restera valable tant que le nom du processus (AppRun.wrapped) ne change pas. Voici ce qu’il faut savoir :


1. La règle reste valable si :

  • Le nom du binaire exécuté par l’AppImage reste AppRun.wrapped (ce qui est généralement le cas pour tous les AppImage).
  • Le contexte SELinux du nouveau fichier AppImage est similaire (par exemple, toujours dans ton répertoire personnel ou /usr/local/bin/).

2. Que faire après une mise à jour ?

  • Vérifie que le nouveau fichier est exécutable :
    bash
    chmod +x kDrive-<nouvelle_version>-amd64.AppImage
  • Applique le bon contexte SELinux (si nécessaire) :
    bash
    sudo chcon -t bin_t kDrive-<nouvelle_version>-amd64.AppImage
  • Teste le lancement :
    bash
    ./kDrive-<nouvelle_version>-amd64.AppImage

3. Si la règle ne fonctionne plus :

  • Vérifie les logs SELinux :
    bash
    sudo ausearch -m avc -ts recent
  • Si une nouvelle erreur apparaît, tu peux générer une nouvelle règle ciblée avec audit2allow comme précédemment.

4. Pourquoi ça marche généralement ?

Les AppImage utilisent presque toujours le même mécanisme de lancement (AppRun ou AppRun.wrapped). Donc, sauf changement majeur dans la structure de l’AppImage, ta règle personnalisée continuera de s’appliquer.


En résumé :

  • Pas besoin de refaire la règle après une mise à jour, sauf si le comportement de l’AppImage change radicalement.
  • Vérifie toujours les permissions et le contexte après une mise à jour.

N’hésite pas à me dire si tu rencontres un problème après une mise à jour, je t’aiderai à ajuster la configuration !

Yesterday 4:34pm
Dans le dossier de kdrive, un fichier kdrive_execstack.pp et un autre kdrive_execstack.te se sont créés. Faut-il les garder où on peut les supprimer ?
Yesterday 4:46pm

Tu peux supprimer en toute sécurité les fichiers kdrive_execstack.te et kdrive_execstack.pp une fois que la règle SELinux a été installée avec semodule -i kdrive_execstack.pp.

Explications :

  • kdrive_execstack.te : Fichier texte source généré par audit2allow, utilisé pour créer le module.
  • kdrive_execstack.pp : Module compilé, déjà installé dans SELinux via semodule -i.

Ces fichiers ne sont plus nécessaires après l’installation du module. Ils ne servent qu’à la création et à l’installation initiale.


Commande pour supprimer :

bash
rm kdrive_execstack.te kdrive_execstack.pp

À retenir :

  • La règle SELinux reste active même après suppression de ces fichiers.
  • Si tu veux désinstaller la règle plus tard, utilise :
    bash
    sudo semodule -r kdrive_execstack

N’hésite pas si tu as d’autres questions !

Yesterday 4:46pm

This Chat is read-only. Login to resume chatting.