# Guide des Permissions de Packages OpenWrt 🌐 **Langues :** [English](../docs/permissions-guide.md) | Français | [äž­æ–‡](../docs-zh/permissions-guide.md) **Version :** 0.3.1 **DerniĂšre mise Ă  jour :** 2025-12-28 **Statut :** Actif **Auteur :** CyberMind > **Ce document est un guide de rĂ©fĂ©rence rapide.** > Pour les procĂ©dures de dĂ©ploiement complĂštes, voir [DEVELOPMENT-GUIDELINES.md §9](development-guidelines.md#deployment-procedures) > > **Documentation connexe :** > - Guide complet : [DEVELOPMENT-GUIDELINES.md](development-guidelines.md) > - RĂ©fĂ©rence rapide : [QUICK-START.md](quick-start.md) > - Outils de validation : [VALIDATION-GUIDE.md](validation-guide.md) > - Briefing automatisation : [CODEX.md](codex.md) --- ## Voir Aussi - **ProcĂ©dures de dĂ©ploiement :** [DEVELOPMENT-GUIDELINES.md §9](development-guidelines.md#deployment-procedures) - **RĂšgles & Commandes rapides :** [QUICK-START.md](quick-start.md) - **Checklist de validation :** [VALIDATION-GUIDE.md](validation-guide.md) - **Standards d'automatisation :** [CODEX.md](codex.md) ## Objectif Assurer que tous les fichiers des packages SecuBox ont les **bonnes permissions** dĂšs l'installation, sans nĂ©cessiter de correction manuelle. ## Permissions Requises ### Fichiers ExĂ©cutables (755) Ces fichiers **DOIVENT** avoir les permissions d'exĂ©cution : ``` -rwxr-xr-x (755) ``` **Liste des fichiers :** - `/usr/libexec/rpcd/luci.*` - Scripts RPCD backend - `/usr/libexec/secubox/*.sh` - Scripts utilitaires - `/etc/init.d/*` - Scripts d'initialisation - `/etc/uci-defaults/*` - Scripts de configuration initiale ### Fichiers Non-ExĂ©cutables (644) Ces fichiers **NE DOIVENT PAS** ĂȘtre exĂ©cutables : ``` -rw-r--r-- (644) ``` **Liste des fichiers :** - `/www/luci-static/resources/**/*.js` - Fichiers JavaScript - `/www/luci-static/resources/**/*.css` - Fichiers CSS - `/usr/share/rpcd/acl.d/*.json` - Permissions ACL - `/usr/share/luci/menu.d/*.json` - DĂ©finitions de menu - `/etc/config/*` - Fichiers de configuration UCI ## Configuration dans le Makefile ### MĂ©thode RecommandĂ©e : PKG_FILE_MODES OpenWrt supporte la variable `PKG_FILE_MODES` pour dĂ©finir les permissions des fichiers lors de l'installation du package. **Syntaxe :** ```makefile PKG_FILE_MODES:=/path/to/file:permissions ``` **Exemple complet :** ```makefile include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-example PKG_VERSION:=0.3.1 PKG_RELEASE:=1 PKG_LICENSE:=Apache-2.0 PKG_MAINTAINER:=CyberMind LUCI_TITLE:=LuCI - Example Module LUCI_DESCRIPTION:=Example SecuBox module LUCI_DEPENDS:=+luci-base +rpcd LUCI_PKGARCH:=all # Permissions des fichiers (les scripts RPCD doivent ĂȘtre exĂ©cutables) PKG_FILE_MODES:=/usr/libexec/rpcd/luci.example:755 include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature ``` ### Plusieurs Fichiers ExĂ©cutables Si vous avez plusieurs fichiers exĂ©cutables : ```makefile PKG_FILE_MODES:=/usr/libexec/rpcd/luci.example:755 \ /usr/libexec/example/helper.sh:755 \ /etc/init.d/example:755 ``` **Note :** Utilisez `\` pour continuer sur la ligne suivante. ## Modules SecuBox avec PKG_FILE_MODES ### luci-app-secubox ```makefile PKG_FILE_MODES:=/usr/libexec/rpcd/luci.secubox:755 \ /usr/libexec/secubox/fix-permissions.sh:755 ``` ### luci-app-system-hub ```makefile PKG_FILE_MODES:=/usr/libexec/rpcd/luci.system-hub:755 ``` ### luci-app-network-modes ```makefile PKG_FILE_MODES:=/usr/libexec/rpcd/luci.network-modes:755 ``` ## VĂ©rification ### Lors du DĂ©veloppement Avant de dĂ©ployer un package, vĂ©rifiez les permissions : ```bash # VĂ©rifier les scripts RPCD ls -l root/usr/libexec/rpcd/luci.* # VĂ©rifier les scripts helper ls -l root/usr/libexec/*/ # VĂ©rifier les fichiers web find root/www -type f -name "*.js" -o -name "*.css" | xargs ls -l ``` ### AprĂšs Installation du Package VĂ©rifiez que les permissions sont correctes sur le routeur : ```bash # Les scripts RPCD doivent ĂȘtre 755 ls -l /usr/libexec/rpcd/luci.* # Les fichiers web doivent ĂȘtre 644 ls -l /www/luci-static/resources/secubox/*.js ls -l /www/luci-static/resources/secubox/*.css ``` ## Script de VĂ©rification Automatique Un script de vĂ©rification est inclus dans `luci-app-secubox` : ```bash # VĂ©rifier et corriger toutes les permissions /usr/libexec/secubox/fix-permissions.sh # Via ubus ubus call luci.secubox fix_permissions # Via l'interface web Dashboard → Quick Actions → "Fix Perms" ``` ## Erreurs Communes ### 1. Script RPCD Non-ExĂ©cutable **SymptĂŽme :** ```bash ubus call luci.example status # Command failed: Permission denied ``` **Cause :** Le script RPCD n'a pas les permissions 755 **Solution :** ```makefile # Ajouter dans le Makefile PKG_FILE_MODES:=/usr/libexec/rpcd/luci.example:755 ``` ### 2. Fichiers Web ExĂ©cutables **SymptĂŽme :** Fichiers JavaScript/CSS avec permissions 755 **Cause :** Mauvaise manipulation ou script mal configurĂ© **Solution :** Les fichiers web sont 644 par dĂ©faut avec LuCI, pas besoin de les spĂ©cifier dans PKG_FILE_MODES ### 3. Script Helper Non-ExĂ©cutable **SymptĂŽme :** ```bash /usr/libexec/example/helper.sh # -bash: /usr/libexec/example/helper.sh: Permission denied ``` **Solution :** ```makefile PKG_FILE_MODES:=/usr/libexec/rpcd/luci.example:755 \ /usr/libexec/example/helper.sh:755 ``` ## RĂ©fĂ©rences - **SystĂšme de build LuCI :** `$(TOPDIR)/feeds/luci/luci.mk` - **Build de packages OpenWrt :** https://openwrt.org/docs/guide-developer/packages - **PKG_FILE_MODES :** https://openwrt.org/docs/guide-developer/build-system/use-buildsystem#build_system_variables ## Checklist PrĂ©-DĂ©ploiement Avant de crĂ©er un package `.ipk` ou `.apk` : - [ ] Tous les scripts RPCD ont 755 dans PKG_FILE_MODES - [ ] Tous les scripts helper ont 755 dans PKG_FILE_MODES - [ ] Les fichiers web (JS/CSS) ne sont PAS dans PKG_FILE_MODES (ils sont 644 par dĂ©faut) - [ ] Les fichiers ACL/Menu ne sont PAS dans PKG_FILE_MODES (ils sont 644 par dĂ©faut) - [ ] Le Makefile utilise `include $(TOPDIR)/feeds/luci/luci.mk` - [ ] PKG_FILE_MODES est dĂ©fini AVANT le `include $(TOPDIR)/feeds/luci/luci.mk` ## Migration des Modules Existants Pour ajouter PKG_FILE_MODES Ă  un module existant : ```bash cd luci-app-mymodule # Éditer le Makefile vi Makefile # Ajouter avant 'include $(TOPDIR)/feeds/luci/luci.mk' PKG_FILE_MODES:=/usr/libexec/rpcd/luci.mymodule:755 # Reconstruire le package make package/luci-app-mymodule/clean make package/luci-app-mymodule/compile ``` --- **Mainteneur :** CyberMind **Licence :** Apache-2.0