Berechtigungen werden im Allgemeinen nicht von dem Verzeichnis weitergegeben, in das Dateien kopiert werden, sondern neue Berechtigungen werden vom Benutzer gesteuert umask
. Wenn Sie jedoch eine Datei von einem Speicherort an einen anderen kopieren, ist dies ein Sonderfall, bei dem der Benutzer im umask
Wesentlichen ignoriert wird und die vorhandenen Berechtigungen für die Datei erhalten bleiben. Das Verständnis dieses Konzepts ist der Schlüssel, um das zu erreichen, was Sie wollen.
Um eine Datei zu kopieren, aber ihre aktuellen Berechtigungen cp
zu "löschen", können Sie mit dem --no-preserve=all
Schalter anweisen , "nicht beizubehalten" .
Beispiel
Angenommen, ich habe die folgende Datei wie Sie.
$ mkdir -m 744 somedir
$ touch afile
$ chmod 400 afile
$ ll
total 0
-r--------. 1 saml saml 0 Feb 14 15:20 afile
Und wie Sie bestätigt haben, erhalten wir Folgendes, wenn wir es nur blind mit kopieren cp
:
$ cp afile somedir/
$ ls -l somedir/
total 0
-r--------. 1 saml saml 0 Feb 14 15:20 afile
Lassen Sie uns dies jetzt wiederholen, aber diesmal sagen Sie cp
"Berechtigungen löschen":
$ rm -f somedir/afile
$ cp --no-preserve=all afile somedir/
$ ls -l somedir/
total 0
-rw-rw-r--. 1 saml saml 0 Feb 14 15:21 afile
Die Berechtigungen für die kopierte Datei sind jetzt auf 664 festgelegt. Woher hat sie diese?
$ umask
0002
Wenn ich meine umask
auf etwas anderes geändert habe , können wir diesen Test ein drittes Mal wiederholen und die Auswirkungen umask
auf das Unerhaltene sehen cp
:
$ umask 037
$ rm somedir/afile
$ cp --no-preserve=all afile somedir/
$ ls -l somedir/
total 0
-rw-r-----. 1 saml saml 0 Feb 14 15:29 afile
Beachten Sie, dass die Berechtigungen nicht mehr 664 sind, sondern 640? Das wurde von der diktiert umask
. Es wurde allen Befehlen mitgeteilt, die eine Datei erstellen, um die unteren 5 Bits in den Berechtigungen zu deaktivieren ... diese Typen: ( ----wxrwx
).
setfacl
Befehl haben Sie versucht? Was war ihre Ausgabe?