Datei, die die Berechtigung des Verzeichnisses erbt, in das es kopiert wird?

9

Ich habe Dateien in meinem Home-Verzeichnis mit nur Benutzerleseberechtigung ( r-- --- ---) erstellt. Ich möchte diese Datei in ein anderes Verzeichnis kopieren, /etc/test/das die Ordnerberechtigung 744 ( rwx r-- r--) hat. Ich muss zulassen, dass die Datei, die ich kopiere, die Berechtigung des Ordners erbt, in den sie kopiert wird, da die Dateiberechtigungen beim Kopieren bisher immer noch dieselben sind ( r-- --- ---). Ich habe den Befehl setfacl ausprobiert, aber er hat nicht funktioniert. Bitte helfen Sie.

PS. Ich kann nicht nur, chmod -r /etc/test/weil es viele Dateien gibt, die im Laufe der Zeit in diesen Ordner kopiert werden, und ich möchte nicht jedes Mal den Befehl chmod ausführen, wenn eine Datei kopiert wird.

LUUUUUUUUUUUUU
quelle
Welchen setfaclBefehl haben Sie versucht? Was war ihre Ausgabe?
Mikel
setfacl -Rm d: u :: rwx, d: g :: r, d: o :: r / etc / test. Es gab keine Ausgabe, es wurde nur der Befehl akzeptiert.
LUUUUUUUUUUUUU
Wie kopierst du die Datei? Was passiert, wenn Sie /bin/cpohne Optionen verwenden?
Mikel
Der Befehl, den ich benutze, ist sudo cp / home / file / etc / test / file. Ich habe jetzt auch versucht, / bin / cp mit keinem anderen Ergebnis zu verwenden
LUUUUUUUUUUUUU

Antworten:

14

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 umaskWesentlichen 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 cpzu "löschen", können Sie mit dem --no-preserve=allSchalter 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 umaskauf etwas anderes geändert habe , können wir diesen Test ein drittes Mal wiederholen und die Auswirkungen umaskauf 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).

slm
quelle
Die --no-preserveFlagge ist nicht Standard, vermutlich ein GNUismus.
Vonbrand
Richtig, danke, ich wollte das im A.
slm
Im Geiste des Valentinstags gebe ich dir einen virtuellen Kuss, es funktioniert! VIELEN DANK!
LUUUUUUUUUUUUU