Je travaille en tant qu'utilisateur et je voudrais créer une archive tar qui, une fois décompressée (par root), extraira ses fichiers avec la propriété root (sinon root devrait changer la propriété manuellement pour chaque fichier, une fois les fichiers extraits. à destination).
J'ai trouvé fakeroot
ce qui semble faire exactement cela. Mais je n'arrive pas à trouver la syntaxe que je dois utiliser pour créer mon archive.
Comment puis-je créer une archive tar.xz, afin que les fichiers aient la propriété root lorsqu'ils sont décompressés par root?
do something with fakeroot ...
tar cfpJ foo.tar.xz foo/
la source
tar --owner=root --group=root cfpJ files.tar.xz files/
donne une erreurtar: You must specify one of the
-Acdtrux 'ou--test-label' options Try
tar --help' outar --usage' for more information.
-
avant votre courte chaîne d'options:tar --owner=root --group=root -cfpJ ...
c'est-cfpJ
-à- dire pascfpJ
.tar --owner=root --group=root -cfpJ files.tar.xz files/
me donne une autre erreur:tar: files.tar.xz: Cannot stat: No such file or directory tar: Exiting with failure status due to previous errors
et en plus, ça crée un fichier appelépJ
.f
à la fin (car cela a plus de sens, intuitivement) et bas et voici, j'obtiens le même échec avec-cfpJ
MAIS les-cpJf
œuvres.Fakeroot
L' utilitaire fakeroot , ou le nouvel utilitaire fakeroot-ng (même objectif, technique d'implémentation différente) exécute un programme et prétend au programme qu'il s'exécute en tant que root et que les appels système tels que
chown
réussis. Seul le programme estime que ces appels ont réussi, rien n'est réellement reflété dans le système de fichiers (il ne peut pas l'être car ilfakeroot
n'a pas de privilèges supplémentaires). Toutefois, si le programme modifie la propriété d'un fichier et prend ensuite des mesures en fonction de la propriété de ce fichier, cela peut modifier le comportement du programme.Une façon typique d'obtenir un travail utile de fakeroot en exécutant un environnement fakeroot où les événements suivants se produisent:
Exemple:
Vous devez utiliser une seule invocation de
fakeroot
, car il n'y a pas de mémoire entre les invocations.Espaces de noms Linux
Juste pour être complet, je mentionnerai que si vous avez un noyau Linux ≥3.8, les espaces de noms sont une autre façon de créer un environnement prétendant root. Le support de l'espace utilisateur n'est pas encore là, donc je n'entrerai pas dans les détails.
Montez l'archive
Une autre façon de résoudre votre problème consiste à monter l'archive en tant que répertoire. Vous pouvez utiliser archivemount , qui est capable de modifier plusieurs formats d'archive via libarchive , y compris le tar compressé.
la source
archivemount
, mais cela nécessite toujours une élévation de privilèges, et même si l'utilisateur se trouve dans un groupe de confiance autorisé à monter et à démonter, le processus échouechown
, donc une sorte d'outils tiers commefakeroot
ou des espaces de noms doivent être utilisés , aussi.