Skip to content

# OpenWrt Package Permissions Guide

Version: 0.3.1
Last Updated: 2025-12-28
Status: Active
Author: CyberMind

> 📚 This is a quick reference guide. For complete deployment procedures, see DEVELOPMENT-GUIDELINES.md §9

> Related Documentation: - Complete guide: DEVELOPMENT-GUIDELINES.md - Quick reference: QUICK-START.md - Validation tools: VALIDATION-GUIDE.md - Automation briefing: CODEX.md

## See Also

- Deployment Procedures: DEVELOPMENT-GUIDELINES.md §9
- Quick Rules & Commands: QUICK-START.md
- Validation Checklist: VALIDATION-GUIDE.md
- Automation Standards: 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:

    PKG_FILE_MODES:=/path/to/file:permissions

Exemple complet:

    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 <contact@cybermind.fr>

    LUCI_TITLE:=LuCI - Example Module
    LUCI_DESCRIPTION:=Example SecuBox module
    LUCI_DEPENDS:=+luci-base +rpcd
    LUCI_PKGARCH:=all

    # File permissions (RPCD scripts must be executable)
    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:

    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

    PKG_FILE_MODES:=/usr/libexec/rpcd/luci.secubox:755 \
        /usr/libexec/secubox/fix-permissions.sh:755

### luci-app-system-hub

    PKG_FILE_MODES:=/usr/libexec/rpcd/luci.system-hub:755

### luci-app-network-modes

    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:

    # 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:

    # RPCD scripts doivent être 755
    ls -l /usr/libexec/rpcd/luci.*

    # 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`:

    # 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. RPCD Script Non-Exécutable

Symptôme:

    ubus call luci.example status
    # Command failed: Permission denied

Cause: Le script RPCD n'a pas les permissions 755

Solution:

    # 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:

    /usr/libexec/example/helper.sh
    # -bash: /usr/libexec/example/helper.sh: Permission denied

Solution:

    PKG_FILE_MODES:=/usr/libexec/rpcd/luci.example:755 \
        /usr/libexec/example/helper.sh:755

## 📚 Références

- LuCI Build System: `$(TOPDIR)/feeds/luci/luci.mk`
- OpenWrt Package Build: 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:

    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

Maintainer: CyberMind contact@cybermind.fr License: Apache-2.0