Fichier de configuration des autorisations sur le contenu de tarfile
Est-il un moyen de chmod 777
le contenu d'un tarfile lors de la création (ou peu après) avant de les distribuer? Les autorisations d'écriture du répertoire en cours de goudron avais est inconnu au moment de goudron require (mais en général, 555). Je voudrais que le déroulé dir être inscriptible par tout le monde sans que les utilisateurs qui sont en déroulant le goudron n'oubliez pas de chmod -R 777 <untarred dir>
avant de continuer.
Maladroit serait de faire une copie du répertoire, puis chmod -R 777 <copydir>
mais je me demandais si il y avait une meilleure solution.
Je suis sur un Solaris 10 de la machine.
De FOND:
Le répertoire racine est dans notre ClearCase vob avec spécifique des autorisations de fichier, de manière récursive. Un tarfile est créé et distribué à plusieurs "clients" au sein de notre org. La plupart des seulement besoin de la lecture/exécution des autorisations (et en particulier NE voulez PAS les droits d'écriture), mais un groupe en particulier a besoin de leur copie récursivement écriture, car ils peuvent modifier ces fichiers, ou même de restaurer une "nouvelle" copie (c'est à dire, dans leur état d'origine que je leur ai donné).
Ce groupe est un peu techniquement contestée. Même s'ils ont des instructions sur le "comment" de la tarfile, ils semblent toujours oublier (ou mal) la création des dossiers de manière récursive inscriptible une fois décompressé. Cela conduit à des appels téléphoniques de me diagnostiquer une variété de problèmes où la cause est qu'ils ont oublié de le faire (ou tort) le chmod avec de l'déroulé répertoire.
Et avant de vous demander, oui, je leur ai écrit un script pour décompresser/chmod (seulement pour eux), mais... oh, jamais l'esprit.
Donc, j'ai pensé créer un, de manière récursive en écriture de la version du goudron de distribuer seulement à eux. Comme je l'ai dit à l'origine, je pourrais toujours créer une copie de la dir, de faire de la copie récursive de l'écriture et ensuite le goudron jusqu'à la copie dir, mais la dir est assez grand, et l'espace disque est parfois presque complète (il peut varier considérablement), afin de faire une copie de la dir ne sera pas réalisable à 100% du temps.
Python a une belle
tarfile
de la bibliothèque pour l'écriture personnalisée goudronnage des scripts, mais GNU tar ne semble pas avoir d'option pour cela.Je ne puis perdre les autorisations existantes.
J'ai juste trempé mes pieds dans le Python eaux il y a quelques jours. Je vais vérifier cela.
OriginalL'auteur splungebob | 2013-08-08
Vous devez vous connecter pour publier un commentaire.
Avec GNU tar, utilisez le
--mode
option lors de la création de l'archive, par exemple:Mais notez que lorsque l'archive est extrait, le umask sera appliqué par défaut. Donc, à moins que l'utilisateur umask est 000, les autorisations seront mis à jour à ce point. Cependant, le umask peut être ignoré par l'aide de la
-p
(--preserve
) option, par exemple:Quelle est l'importance de la majuscule
X
? Je saisx
est normalement le fichier exécutable peu, mais je ne l'ai jamais vu capitalisés avant.Lorsque vous définissez les autorisations sur tous les fichiers dans un répertoire,
a+x
doit généralement être évitée, car cela rend les choses un exécutable qui n'a pas de sens (des fichiers texte, des fichiers de configuration, etc).a+X
seulement rend les fichiers exécutables si elles ont déjà au moins un bit d'exécution est fixé.OriginalL'auteur Todd Owen
Vous pouvez facilement modifier les autorisations sur les fichiers avant votre commande tar, bien qu'en général, je recommande aux gens de ne JAMAIS utiliser 777 pour quoi que ce soit à l'exception de /tmp sur un système unix, il est plus productif d'utiliser 755 ou pire des cas 775 pour les répertoires. De cette façon, vous ne laissons pas le monde d'écrire à vos répertoires, ce qui est généralement conseillé.
La plupart des utilisateurs d'unix n'aime pas à définir les autorisations de manière récursive, car elle définit le bit d'exécution sur les fichiers qui ne doivent pas être exécutables (fichiers de configuration par exemple) pour éviter cela, ils ont inventé une nouvelle façon d'utiliser chmod il y a quelques temps, appelé mode symbolique. La lecture de la page de man chmod doit fournir des détails, mais vous pouvez essayer ceci:
Où votre $targetdir est le répertoire qui vous goudronnage et $destTarFile est le nom du fichier tar vous êtes en train de créer.
Lorsque vous déballez que le fichier tar, les autorisations sont tenté d'être conservé. Certaines règles régissent ce processus, bien sûr - l'uid et le gid du propriétaire ne sera maintenue que si la racine est en train de faire la untaring, mais sinon, ils sont mis à la effective de l'uid et le gid du processus actuel.
/tmp
devrait être1777
plutôt que de simples777
; qui empêche les personnes qui ne peuvent pas écrire dans un fichier de le supprimer (sticky bit sur le répertoire). Mais le meilleur moyen est de définir les autorisations sur les répertoires avant de créer letar
fichier.(Et, jokey de côté, si vous aviez attendu un jour ou donc, vous devez être admissible à un Renouveau badge si vous obtenez un deuxième haut-voix.)
Merci pour la réponse, mais cela allait changer les autorisations existantes sur mes fichiers. Ce n'est pas souhaitable, comme je l'ai déjà mentionné dans ma réponse à @MarcB. Je veux seulement lecture/écriture sur le contenu du déroulé de goudron.
Juste assez de @splungebob. Mais mon point est toujours debout - pourquoi sur terre serait vous voulez le faire? Aussi, quel est le problème avec la façon dont vous avez votre propre ensemble d'autorisations si vous êtes de tarage jusqu'à donner à quelqu'un d'autre? Un script d'installation qui vous le mettre dans la racine de votre archive peut être utilisé pour définir des autorisations et assurez-vous que tout est comme vous vous attendez... vous voulez une réponse détaillant comment le faire?
J'ai édité l'OP pour inclure des informations de fond.
OriginalL'auteur Charles Bedford