Où mettre des scripts utilitaires dans Debian mais pas dans PATH?

2

J'ai une application Web avec une base de données. J'ai des scripts utilitaires utilisés pour initialiser la base de données. Je souhaite inclure ces scripts dans le paquet Debian, mais ils sont dangereux car ils suppriment le schéma et le recréent.

Donc, je ne veux pas mettre ces scripts dans un répertoire du PATH. Où vont les scripts de cette nature sur un système Debian? (Notez que ces scripts sont ne pas scripts de mainteneur de paquets.)

rlandster
la source

Réponses:

2

Debian a un très complet politique il est donc généralement utile de s'y référer. Je pense que ça couvre tout

9.1.1 Structure du système de fichiers

L’emplacement de tous les fichiers et répertoires doit être conforme à la   Norme de hiérarchie des systèmes de fichiers (FHS), version 2.3, avec les exceptions   notés ci-dessous, et sauf si cela enfreint d'autres conditions de travail.   Politique Debian.

Et vérifiant sur le FHS nous trouvons,

/ usr / lib: Bibliothèques de programmation et de packages

Objectif

/ usr / lib inclut les fichiers objets, les bibliothèques et les fichiers binaires internes qui   ne sont pas destinés à être exécutés directement par les utilisateurs ou les scripts shell.   [22]

Les applications peuvent utiliser un seul sous-répertoire sous / usr / lib. Si un   l'application utilise un sous-répertoire, toutes les données dépendantes de l'architecture   exclusivement utilisé par l'application doit être placé dans cette   sous-répertoire.

puis retour à la politique Debian,

La nécessité de fichiers objets, de binaires internes et de bibliothèques,   y compris libc.so. *, à placer directement sous / lib {, 32}   et / usr / lib {, 32} est modifié pour permettre l’installation de fichiers   to / lib / triplet et / usr / lib / triplet, où triplet est la valeur   retourné par dpkg-architecture -qDEB_HOST_MULTIARCH pour le   architecture du package. Les packages ne peuvent installer des fichiers sur aucun   chemin de triplet autre que celui correspondant à l'architecture de ce   paquet; par exemple, un paquet Architecture: amd64 contenant   Les bibliothèques x86 32 bits peuvent ne pas installer ces bibliothèques sur   / usr / lib / i386-linux-gnu. [69]

Les applications peuvent également utiliser un seul sous-répertoire sous / usr / lib / triplet.

Le lieur / chargeur de temps d’exécution, ld *, doit toujours être disponible dans le répertoire existant.   emplacement sous / lib ou / lib64 puisque c'est   une partie de l'ELF ABI pour l'architecture.

EightBitTony
la source
2

Un lieu commun pour les exécutables internes à un programme est /usr/lib/ programme / .

(Les anciens systèmes Debian utilisent /usr/libexec/, mais ce n’est pas conforme à FHS.)

Vous pouvez également modifier les scripts pour, par exemple, avertir l'utilisateur et quitter si --force n'est pas donné en ligne de commande.

grawity
la source
1

Où est votre racine d'installation? Si dans / usr / local, je les mettrais personnellement dans le répertoire / usr / local / sbin ou / usr / local / etc / scripts. Les utilisateurs normaux ne devraient pas avoir sbin dans leur PATH, et certainement pas quoi que ce soit dans etc. Si c'est dans / opt, alors vous êtes encore plus en sécurité, car les gens devront ajouter explicitement / opt / WHATEVER / bin à leur PATH, et vous peut les mettre n'importe où mais bin.

Est-ce que vos scripts doivent même avoir exécuter bit set? Si vous forcez les gens à courir bash my_schema_loader.sh au lieu de courir my_schema_loader.sh il empêchera la plupart des utilisations non intentionnelles, mais n'interférera pas beaucoup avec l'utilisation intentionnelle.

Rich Homolka
la source
De nombreux utilisateurs normaux ont sbin dans $ PATH car malheureusement, c’est là que des utilitaires tels que ping ou ip sont.
grawity