J'ai deux fichiers dans un répertoire. L'un a les autorisations correctes et l'autre non. Existe-t-il un moyen de «copier» l'ensemble des autorisations d'un fichier à un autre?
14
J'ai deux fichiers dans un répertoire. L'un a les autorisations correctes et l'autre non. Existe-t-il un moyen de «copier» l'ensemble des autorisations d'un fichier à un autre?
La version GNU de l' utilitaire chmod peut copier le mode d'un fichier ( RFile
) vers un autre ( file
).
chmod --reference=RFile file
GNU coreutils se trouve dans la plupart des distributions Linux et Cygwin, entre autres. Toutes les implémentations chmod ne proposent pas cette option.
--reference
option est incluse dans la version GNU; OSX utilise probablement un chmod qui provient de BSD à la place. OSX man chmod : developer.apple.com/Mac/library/documentation/Darwin/Reference/…cp -dpR <source-file> <dest-file>
volonté, lors de la copie d' un fichier, copie des autorisations ainsi que le file.rJe suis venu avec ceci:
Ce n'est pas totalement à l'épreuve des balles, mais fait ce dont j'ai besoin.
la source
essaye ça:
find /PATH/TO/TARGET -exec chmod --reference /PATH/TO/SOURCE/{} {} \;
cela remonterait récursivement et chmoder chaque fichier, si deux répertoires ne correspondent pas aux fichiers, vous verrez beaucoup d'erreur "Aucun fichier ou répertoire".
la source
find /home/myubuntuuser/Desktop/test1 -exec chmod --reference /home/myubuntuuser/Desktop/test2/{} {} \;
Vous pouvez utiliser
getfacl
pour récupérer la liste complète des autorisations de fichiers, du propriétaire, du groupe et des ACL supplémentaires (listes de contrôle d'accès).Si vous enregistrez cette sortie dans un fichier (par exemple
acl.txt
), vous pouvez ensuite restaurer à partir de ce format avecsetfacl --restore acl.txt
. Si vous ne souhaitez restaurer qu'un seul fichier et que ce fichier a un nom de fichier différent de l'original, vous voudrez utilisersetfacl --set-file acl.txt filename.txt
(oùfilename.txt
est le nouveau nom de fichier).Pas
Enregistrez les autorisations d'origine dans
acl.txt
:Écraser les autorisations (pour la démonstration; c'est juste pour que vous puissiez voir que la restauration à l'étape suivante fonctionne)
Utilisez
setfacl
pour restaurer les autorisations correctes à partir deacl.txt
:Le nom de fichier provient du
# file:
commentaire généré pargetfacl
, il n'est donc pas nécessaire de le spécifier sur la ligne de commande.Si vous souhaitez restaurer ces autorisations dans un fichier différent, vous pouvez utiliser
--set-file
plutôt que--restore
comme ceci:Exemple
Si vous finissez par remplacer les autorisations sur certains fichiers
/usr
, mais que vous ne savez pas quels fichiers vous avez écrasés, vous pouvez généralement le corriger en restaurant à partir d'un autre système configuré de manière similaire.Autorisations de sauvegarde à partir du système de travail (remarque:
getfacl
génère des chemins d'accès relatifs, assurez-vous donccd
d'un emplacement cohérent sur les deux machines)Copiez le cliché ACL sur le système avec des autorisations rompues
Restaurez le cliché ACL pour remplacer les autorisations rompues par celles de la bonne machine connue
la source