Ich habe zwei Dateien in einem Verzeichnis. Einer hat die richtigen Berechtigungen und der andere nicht. Gibt es eine Möglichkeit, den Berechtigungssatz von einer Datei in eine andere zu "kopieren"?
unix
permissions
file-management
Svish
quelle
quelle
--reference
Option ist in der GNU-Version enthalten. OSX verwendet wahrscheinlich stattdessen ein chmod , das von BSD stammt. OSX man chmod : developer.apple.com/Mac/library/documentation/Darwin/Reference/…cp -dpR <source-file> <dest-file>
Ich habe mir nur gedacht, dass es nützlich wäre, hier zu erwähnen, dass beim Kopieren einer Datei sowohl die Berechtigungen als auch die Datei.rDas habe ich mir ausgedacht:
Es ist nicht vollständig kugelsicher, tut aber, was ich brauche.
quelle
Versuche dies:
find /PATH/TO/TARGET -exec chmod --reference /PATH/TO/SOURCE/{} {} \;
Dies würde rekursiv nach oben gehen und jede Datei chmod. Wenn zwei Verzeichnisse für Dateien nicht übereinstimmen, wird der Fehler "Keine solche Datei oder solches Verzeichnis" häufig angezeigt.
quelle
find /home/myubuntuuser/Desktop/test1 -exec chmod --reference /home/myubuntuuser/Desktop/test2/{} {} \;
Mit können Sie
getfacl
die vollständige Liste der Dateiberechtigungen, Eigentümer, Gruppen und zusätzlichen ACLs (Zugriffssteuerungslisten) abrufen.Wenn Sie diese Ausgabe in einer Datei speichern (zB
acl.txt
), können Sie dann aus diesem Format mit wiederherstellensetfacl --restore acl.txt
. Wenn Sie nur eine einzelne Datei wiederherstellen möchten und diese Datei einen anderen Dateinamen als das Original hat, sollten Sie diesen verwendensetfacl --set-file acl.txt filename.txt
(wobeifilename.txt
der neue Dateiname steht).Schritte
Speichern Sie die ursprünglichen Berechtigungen unter
acl.txt
:Überschreibberechtigungen (zur Demonstration; dies ist nur so, dass Sie sehen können, dass das Wiederherstellen im nächsten Schritt funktioniert)
Verwenden Sie
setfacl
diese Option , um die richtigen Berechtigungen wiederherzustellenacl.txt
:Der Dateiname stammt aus dem
# file:
Kommentar, der von generiert wurdegetfacl
, sodass er nicht in der Befehlszeile angegeben werden muss.Wenn Sie diese Berechtigungen für eine andere Datei wiederherstellen möchten, können Sie
--set-file
stattdessen--restore
Folgendes verwenden:Beispiel
Wenn Sie am Ende die Berechtigungen für einige Dateien in überschreiben
/usr
, aber nicht wissen, welche Dateien Sie überschrieben haben, können Sie dies normalerweise beheben, indem Sie sie von einem anderen, ähnlich konfigurierten System wiederherstellen.Sicherungsberechtigungen vom Arbeitssystem (Hinweis:
getfacl
Generiert relative Pfade, stellen Sie also sicher, dass Siecd
auf beiden Computern einen konsistenten Speicherort haben.)Kopieren Sie den ACL-Speicherauszug mit fehlerhaften Berechtigungen auf das System
Stellen Sie den ACL-Speicherauszug wieder her, um die beschädigten Berechtigungen mit denen des als funktionierend bekannten Computers zu überschreiben
quelle