Gibt es einen Befehl oder ein Flag zum Klonen des Benutzer- / Gruppenbesitzes und der Berechtigungen für eine Datei aus einer anderen Datei? Um die Dauerwellen und das Eigentum genau zu denen einer anderen Datei zu machen?
shell
permissions
files
chown
user394
quelle
quelle
--reference
Parameter vonchmod
undchown
zuvor geachtet :).Auf jedem Unix mit GNU-Dienstprogrammen wie (nicht eingebettetem) Linux oder Cygwin können Sie
chmod --reference
und verwendenchown --reference
.Wenn Ihr System über ACLs verfügt , versuchen Sie es mit den ACL-Befehlen
getfacl
undsetfacl
. Diese Befehle unterscheiden sich ein wenig von System zu System, aber auf vielen können Siegetfacl other_file | setfacl -bnM - file_to_change
die Berechtigungen kopieren. Dies kopiert nicht das Eigentum; Sie können dies mit einer sorgfältigen Analyse vonls -l other_file
tun, vorausgesetzt, Sie haben keine Benutzer- oder Gruppennamen, die Leerzeichen enthalten.quelle
Habe einen bash Befehl basierend auf der Antwort von Matteo :)
Code:
chmod $( stat -f '%p' "$1" ) "${@:2}"
Verwendungszweck:
cp-permissions <from> <to>...
quelle
${*:2}
? Mach das nie wieder! Dies schlägt fehl, wenn einer der Dateinamen Leerzeichen (oder Tabulatoren) enthält. Verwenden Sie"${@:2}"
. Verwenden Sie auch"$1"
anstelle von nur$1
.chmod "$(stat -c '%a' "$fromfile")" tofile
in GNU Coreutils, aber Sie können es auch--reference
in diesem Fall verwenden, da dasstat
CLI-Dienstprogramm nicht POSIX ist. Es sagt sogar pubs.opengroup.org/onlinepubs/9699919799/utilities/ls.htmlthatls -l
es nicht gekürzt: "Die Ausgabe von ls (mit der Option -l und verwandten Optionen) enthält Informationen, die logischerweise von Dienstprogrammen wie chmod und touch verwendet werden können, um Dateien in einem bekannten Zustand wiederherzustellen leicht in ein Format übersetzt, das verwendet werden kann. "Wenn Sie kein System mit chmod / chown von GNU verwenden (das die
--reference
Option unterstützt), können Sie versuchen, die Ausgabe von zu analysierenls -l
Hier ein kleines Skript für
chmod
(wenn Sie einen See haben, der erweiterte Regexes unterstützt, könnten sie viel lesbarer geschrieben werden ...)UPDATE :
Dies ist noch einfacher mit
stat
:quelle
ls -l
Ausgabe zu analysieren, können Sie auch diestat
Ausgabe analysieren .stat
Syntax. Ihrchmod $(stat ...)
Befehl funktioniert nicht, da%p
allein zu viele Informationen für * BSDs ausgegeben werden.chmod
Verwenden Sie diesen Befehl , um%Lp
nur die U / G / O-Bits auszugeben. Etwas aufwendigeres wäre für Sticky / Setuid / Setgid-Bits erforderlich.Ich wollte Matteos Skript anpassen. Eine for-Schleife sollte verwendet werden, um zu überprüfen, ob die Dateien vorhanden sind, bevor der Befehl chmod für sie ausgeführt wird. Dadurch wird der Skriptfehler eleganter.
Ich denke, dies ist die beste Option, da sie für alle * nix-Betriebssysteme wie Solaris, Linux usw. verwendet werden kann.
Ich fand, dass auf einem meiner Solaris 10-Computer
stat
nicht gefunden wurde. Das könnte jedoch ein Problem mit meiner Konfiguration sein.quelle
Das funktioniert bei mir:
cp -p --attributes-only <from> <to>
quelle