Pour rendre exécutable un fichier AppImage (comme kdrive) sur openSUSE Tumbleweed avec SELinux activé, voici les étapes à suivre :
Par défaut, les fichiers téléchargés ne sont pas exécutables. Utilise la commande suivante :
bashchmod +x /chemin/vers/kdrive.AppImage
SELinux peut bloquer l'exécution si le contexte de sécurité n'est pas correct. Vérifie le contexte actuel :
bashls -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 :
bashchcon -t bin_t /chemin/vers/kdrive.AppImage
Si SELinux bloque toujours l'exécution, tu peux ajouter une règle temporaire pour autoriser l'exécution des AppImage :
bashsudo setsebool -P allow_execheap 1
Si cela ne suffit pas, tu peux aussi essayer :
bashsudo setsebool -P allow_execstack 1
Essaie de lancer le logiciel :
bash./kdrive.AppImage
Si l'exécution échoue, consulte les logs SELinux pour identifier le problème :
bashsudo ausearch -m avc -ts recent
Ou utilise audit2allow pour générer une politique personnalisée si nécessaire.
chmod +x kdrive.AppImagechcon -t bin_t kdrive.AppImagesetsebool -P allow_execheap 1ausearch -m avc -ts recentAs-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.
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.
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).
bin_t (recommandé pour les binaires) :bashsudo chcon -t bin_t kDrive-3.7.9.1-amd64.AppImage
user_home_t :bashsudo chcon -t user_home_t kDrive-3.7.9.1-amd64.AppImage
bashls -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
bash./kDrive-3.7.9.1-amd64.AppImage
bashsudo ausearch -m avc -ts recent
/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 !
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.
bashchmod +x kDrive-3.7.9.1-amd64.AppImage
SELinux peut bloquer l'exécution de binaires depuis /home/. Pour contourner cela, tu peux :
/usr/local/bin/ et appliquer le bon contexte :
bashsudo 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
/home/ avec :
bashsudo setsebool -P allow_execmod 1 sudo setsebool -P allow_execheap 1
Si l'AppImage ne se lance toujours pas, consulte les logs pour voir ce que SELinux bloque :
bashsudo 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.
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.
execstack pour ce processusTu peux créer une politique SELinux personnalisée pour autoriser cette action uniquement pour ton AppImage :
bashsudo grep "AppRun.wrapped" /var/log/audit/audit.log | audit2allow -M kdrive_execstack sudo semodule -i kdrive_execstack.pp
Relance l’AppImage et vérifie à nouveau les logs. Si tout est correct, l’erreur execstack ne devrait plus apparaître.
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.
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.
kdrive_execstack.pp est installé dans la base de données SELinux.bashsudo semodule -r kdrive_execstack
En résumé :
N’hésite pas si tu as d’autres questions sur la gestion de SELinux ou des AppImage !
La règle que tu as créée avec audit2allow est très ciblée :
execstack (exécution de code sur la pile) pour le processus AppRun.wrapped, c’est-à-dire ton AppImage kdrive.Risque limité :
execstack) est normalement bloquée car c’est une technique parfois utilisée par des logiciels malveillants.AppRun.wrapped de cet AppImage).bashsudo semodule -r kdrive_execstack
En résumé :
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 !
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 :
AppRun.wrapped (ce qui est généralement le cas pour tous les AppImage)./usr/local/bin/).bashchmod +x kDrive-<nouvelle_version>-amd64.AppImage
bashsudo chcon -t bin_t kDrive-<nouvelle_version>-amd64.AppImage
bash./kDrive-<nouvelle_version>-amd64.AppImage
bashsudo ausearch -m avc -ts recent
audit2allow comme précédemment.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é :
N’hésite pas à me dire si tu rencontres un problème après une mise à jour, je t’aiderai à ajuster la configuration !
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.
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.
bashrm kdrive_execstack.te kdrive_execstack.pp
bashsudo semodule -r kdrive_execstack
N’hésite pas si tu as d’autres questions !
This Chat is read-only. Login to resume chatting.