Existe-t-il une commande ou un indicateur permettant de cloner la propriété de l'utilisateur / groupe et les autorisations sur un fichier à partir d'un autre fichier? Rendre les permanentes et la propriété exactement celles d'un autre fichier?
shell
permissions
files
chown
utilisateur394
la source
la source
--reference
paramètre d'chmod
etchown
avant :).Sur tout UNIX avec des utilitaires GNU, tels que Linux (non intégré) ou Cygwin, vous pouvez utiliser
chmod --reference
etchown --reference
.Si votre système possède des ACL , essayez les commandes ACL
getfacl
etsetfacl
. Ces commandes diffèrent légèrement d’un système à l’autre, mais sur beaucoup d’entre elles, vous pouvez utilisergetfacl other_file | setfacl -bnM - file_to_change
pour copier les autorisations. Cela ne copie pas la propriété. vous pouvez le faire avec une analyse minutieuse dels -l other_file
, en supposant que vous n'avez pas de nom d'utilisateur ou de groupe contenant des espaces.la source
Est-ce qu'une commande bash basée sur la réponse de Matteo :)
Code:
chmod $( stat -f '%p' "$1" ) "${@:2}"
Usage:
cp-permissions <from> <to>...
la source
${*:2}
? Ne refais plus jamais ça! Cela échouera si l'un des noms de fichiers contient un espace (ou des onglets). Utilisez"${@:2}"
. Aussi, utilisez"$1"
plutôt que juste$1
.chmod "$(stat -c '%a' "$fromfile")" tofile
dans GNU Coreutils, mais vous pourriez aussi bien l'utiliser--reference
dans ce cas puisque l'stat
utilitaire de la CLI n'est pas POSIX, il est même indiqué que pubs.opengroup.org/onlinepubs/9699919799/utilities/ls.htmlthatls -l
ne le coupera pas: "La sortie de ls (avec l'option -l et les options associées) contient des informations pouvant être utilisées de manière logique par des utilitaires tels que chmod et touch pour restaurer les fichiers dans un état connu. facilement traduit dans un format utilisable. "Si vous n’utilisez pas de système avec chmod / chown de GNU (qui supporte l’
--reference
option), vous pouvez essayer d’analyser la sortie dels -l
Voici un petit script pour
chmod
(si vous voyez un fichier qui supporte les expressions rationnelles étendues, elles pourraient être écrites de manière beaucoup plus lisible ...)MISE À JOUR :
C'est encore plus simple avec
stat
:la source
ls -l
sortie, vous pouvez analyser lastat
sortie.stat
syntaxe * BSD ici. Votrechmod $(stat ...)
commande ne fonctionnera pas car à elle%p
seule génère trop d'informations pour * BSDchmod
, utilisez-les%Lp
pour générer uniquement les bits u / g / o. Quelque chose de légèrement plus élaboré serait nécessaire pour les bits sticky / setuid / setgid.Je voulais ajouter un ajustement au script de Matteo . Une boucle for doit être utilisée pour valider l'existence des fichiers avant d'exécuter la commande chmod sur ceux-ci. Cela laissera le script sortir plus gracieusement.
Je pense que c'est la meilleure option car elle peut être utilisée pour tous les systèmes d'exploitation * nix, tels que Solaris, Linux, etc.
J'ai trouvé que sur l'une de mes machines Solaris 10,
stat
n'a pas été trouvé. Cela pourrait cependant être un problème avec ma configuration.la source
Cela fonctionne pour moi:
cp -p --attributes-only <from> <to>
la source