Comment usurper / simuler un répertoire utilisé par une application binaire comme un autre répertoire?

9

Supposons qu'il existe une application binaire qui écrit toujours ses données /tmp.

Comment pourrais-je usurper / simuler /tmppour ce binaire comme un autre répertoire (par exemple home/tmp)?

Supposons que je n'ai aucun moyen de modifier ce binaire pour le forcer à utiliser un répertoire différent.

Nobilis
la source

Réponses:

11

Vous pouvez exécuter l'application dans un chrootenvironnement, c'est-à-dire que /l'application ne l'est pas /. Vous créez une nouvelle hiérarchie complète du système de fichiers et montez ( --bind) tout ce dont vous avez besoin. Le point est pertinent: Vous pouvez monter le réel ~/tmpà /tmpdans l' chrootenvironnement.

Au lieu d'utiliser chroot(qui nécessite le privilège de superutilisateur), vous pouvez faire plus ou moins la même chose avec les conteneurs Linux ( lxc). Je ne suis pas familier avec lxcmais comme c'est un processus utilisateur normal pour le système hôte, vous n'avez pas besoin d'être le superutilisateur pour de telles configurations dans le conteneur.

Hauke ​​Laging
la source
Excellente réponse, je n'avais entendu parler d'aucun des deux chrootou d' lxcêtre capable de faire ça. C'est aussi très agréable de savoir qu'il existe un moyen d'y parvenir sans être un superutilisateur.
Nobilis
3
@Nobilis 98 votes positifs manquants pour que cela soit reconnu comme une excellente réponse ...
Hauke ​​Laging
2
Attention, cependant, que chrootnécessite une configuration supplémentaire (vous remplacez l'ensemble de /, non seulement /tmp, de sorte que tout accès à /etc, /varetc., seront également à l' intérieur de la « prison ») et crée des problèmes de sécurité de son propre (le programme « emprisonné » peut être capable de manipuler des parties du système de fichiers qui seraient normalement interdites si vous ne faites pas attention aux autorisations lors de la configuration de votre faux /).
IMSoP
@IMSoP Pourriez-vous expliquer plus en détail "peut être capable de manipuler des parties du système de fichiers qui seraient normalement hors limites"?
Hauke ​​Laging
@HaukeLaging Si le nouveau /n'est pas limité à être écrit uniquement par root, l'utilisateur "emprisonné" peut créer ou remplacer des fichiers qui semblent se trouver dans des emplacements clés du système, tels que /etc/passwd; cela peut ensuite être utilisé pour une élévation de privilèges qui ne serait pas possible en dehors du chroot. De nombreux serveurs FTP Linux, qui utilisent traditionnellement chrootpour masquer le reste du système de fichiers, refusent désormais de le faire si le répertoire est accessible en écriture par un utilisateur non root.
IMSoP
8

La plupart des logiciels compatibles POSIX respecteraient la variable d'environnement TMPDIR , par exemple

env TMPDIR=~/mytmp  /path/to/application
HBruijn
la source