Dateirechte | synoacltool

peterhoffmann

Benutzer
Sehr erfahren
Mitglied seit
17. Dez 2014
Beiträge
6.057
Punkte für Reaktionen
1.855
Punkte
254
Hallo,

ich habe u.a. ein Script, welches rsync ein Backup von einem Dokumentenordner macht.
Die dabei angelegten Ordner waren nicht über eine Freigabe sichtbar, auf dem Weg ging ACL verloren.

Rausgefunden habe ich, dass ich bei rsync mit dem Schalter --syno-acl das ändern kann (noch ungetestet).

Soweit, so gut.

Gefunden habe ich aber auch das synoacltool

Wie kann ich ACL für vorhandene Ordner sicher vererben?

Beispiel:
Folgender Ordner hat noch ACL:
/volume1/gemeinsamerOrdner/backup/
Alle Ordner (und Dateien) darunter aber nicht mehr.
 
Zuletzt bearbeitet:

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
13.767
Punkte für Reaktionen
3.740
Punkte
468
Geh mit der Filestation auf gemeinsamerOrdner, Rechtsklick, Eigenschaften, Berechtigungen. Mit der Option unten links kannst du die Vererbung dann nochmal anstoßen.

1694432471472.png
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
13.767
Punkte für Reaktionen
3.740
Punkte
468
@geimist, hab ich grad mal probiert - geht nicht

Was ich grad probiert habe:
Code:
mkdir /volume1/gemeinsamerOrdner/backup/xxx (<-neuer Ordner xxx bekommt ACLs von backup vererbt)
chmod 755 /volume1/gemeinsamerOrdner/backup/xxx (<- kappt die Vererbung)
mkdir /volume1/gemeinsamerOrdner/backup/xxx/yyy (<- noch ein Ordner ohne ACL eins tiefer)
"synoacltool -enforce-inherit /volume1/gemeinsamerOrdner/backup" bewirkt nichts,
"synoacltool -copy /volume1/gemeinsamerOrdner/backup /volume1/gemeinsamerOrdner/backup/xxx" geht, aber leider nicht rekursiv (yyy bleibt ohne ACLs)

Wer Lust hat, kann ja mal weiter forschen/testen.
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.541
Punkte für Reaktionen
1.373
Punkte
234
Ich könnte mir vorstellen, dass das nur Dateibasiert funktioniert (nur eine Vermutung). Und auch nicht, wenn die Vererbung im übergeordneten Ordner schon unterbrochen wurde.
 

peterhoffmann

Benutzer
Sehr erfahren
Mitglied seit
17. Dez 2014
Beiträge
6.057
Punkte für Reaktionen
1.855
Punkte
254
Probiere mal synoacltool -enforce-inherit <datei>.
Genauso hatte ich es im Vorfeld schon probiert.
Das Tool quittiert den Befehl ohne jegliche Ausgabe, es wird aber nichts vererbt bzw. gesetzt.
Ja, das war auch so meine Erfahrung.

Da es in der Filestation rekursiv geht, muss es grundsätzlich einen Weg geben. Gefunden habe ich ihn leider auch noch nicht.
 

peterhoffmann

Benutzer
Sehr erfahren
Mitglied seit
17. Dez 2014
Beiträge
6.057
Punkte für Reaktionen
1.855
Punkte
254

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
13.767
Punkte für Reaktionen
3.740
Punkte
468
  • Like
Reaktionen: peterhoffmann

peterhoffmann

Benutzer
Sehr erfahren
Mitglied seit
17. Dez 2014
Beiträge
6.057
Punkte für Reaktionen
1.855
Punkte
254
Lösung:
Code:
find . -execdir synoacltool -copy /volumeX/herkunft {} \;
Quelle:
User Benares und hier => automatica.com.au/2016/11/recursively-propagate-permissions-on-a-synology-nas-with-synoacltool/
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Benares

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
13.767
Punkte für Reaktionen
3.740
Punkte
468
Macht das auch alles rekursiv, also auch Dateien und Verzeichnisse? Mal getestet?
Aber sollte klappen. So wie es verstehe, wechselt "-execdir" (kannte ich nicht) bei jedem Treffer (also alles) in das gefundene Verzeichnis und führt dort den Befehl aus.
Aber sollte "-exec" nicht genauso gehen?
 
Zuletzt bearbeitet:

peterhoffmann

Benutzer
Sehr erfahren
Mitglied seit
17. Dez 2014
Beiträge
6.057
Punkte für Reaktionen
1.855
Punkte
254

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
[…] rsync […] auf dem Weg ging ACL verloren.
Mich würde interessieren mit welchen Optionsparametern rsync ausgeführt wurde.

Hast du dabei an die ACLs und extended attributes gedacht?

Code:
 -A, --acls                  preserve ACLs (implies --perms)
 -X, --xattrs                preserve extended attributes

Wenn ja, sollten die ACLs aus meiner Erfahrung auch übernommen werden.
 

peterhoffmann

Benutzer
Sehr erfahren
Mitglied seit
17. Dez 2014
Beiträge
6.057
Punkte für Reaktionen
1.855
Punkte
254
@luddi
In dem Fall war es das Backupscript von mgutt => forums.unraid.net/topic/97958-rsync-incremental-backup/
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
Und was steht da? Mit welchen Optionen wird rsync aufgerufen?

Mit genau diesen hier…
1694451132407.png

Füge doch einmal nach Zeile 53 die beiden Optionen an die ich vorher erwähnt habe.
Code:
--acls
--xattrs

Im Zeile 241 und 254 wird rsync mit genau diesen Optionen aufgerufen die sich in der Variable „rsync_options“ befinden.
Alle anderen rsync Aufrufe in dem Script sind dry runs um checks auszuführen.

Probier’s mal aus, würde mich interessieren ob es klappt. Aber meiner Erfahrung nach werden auch die ACLs korrekt übernommen wenn man das rsync mitteilt.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: peterhoffmann

peterhoffmann

Benutzer
Sehr erfahren
Mitglied seit
17. Dez 2014
Beiträge
6.057
Punkte für Reaktionen
1.855
Punkte
254
Ich habe die beiden Optionen eingefügt und mit -x gestartet.

Im Auswurf konnte ich sehen, dass er die Optionen übernimmt:
Bash:
rsync --acls --xattrs --numeric-ids --archive --human-readable --itemize-changes '--exclude=[Tt][Ee][Mm][Pp]/*' '--exclude=[Tt][Mm][Pp]/*' '--exclude=Cache/*' --exclude=@eaDir --exclude=#recycle --exclude=_synocr --exclude=backup --exclude=log ' --stats /volume1/pfad/quelle /volume3/pfad2/.20230912_083035

Es hat dennoch nicht geklappt:
Code:
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1464) [sender=3.1.2]

Gefunden habe ich mehrere Zeilen wie diese hier:
Code:
rsync: rsync_xal_set: set_xattr_syno_acl(""/volume3/pfad2/.20230912_083035/irgendwelcheOrdnernamen"","user.rsync.synoacl") failed: No data available (61)
 

peterhoffmann

Benutzer
Sehr erfahren
Mitglied seit
17. Dez 2014
Beiträge
6.057
Punkte für Reaktionen
1.855
Punkte
254
Kleiner Nachtrag:
Es hat "halb" geklappt.
Beim Überprüfen vom Zielordner habe ich festgestellt, dass die Ordner kein ACL bekamen (siehe Fehlermeldung vom Vorposting), aber bei den Dateien sich was getan hat. Dort leider nur unvollständig.

Aufruf:
Code:
synoacltool -get datei
Das sieht dann am Ziel so aus:
Code:
ACL version: No ACL
Archive: is_inherit,is_support_ACL
Owner: [dsa(user)]

Bei der Originaldatei in der Quelle sieht es so aus:
Code:
ACL version: 1
Archive: is_inherit,is_support_ACL
Owner: [dsa(user)]
---------------------
         [0] group:administrators:allow:rwxpdDaARWc--:---- (level:1)
         [1] user:USERNAME:allow:rwxpdDaARWc--:---- (level:1)
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
13.767
Punkte für Reaktionen
3.740
Punkte
468
Hab grad gesehen, es gibt bei rsync auch den Parameter
--syno-acl copy Synology ACL data
probier's mal mit dem (evtl. statt --acls)
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
Ah okay sehr schön, diese Option habe ich nicht gesehen da ich nur nach den gewohnten Optionen ausschau gehalten habe.
Aber das klingt doch sicher vernünftig wenn Synology hier einen eigene rsync mit einem separaten Parameter erstellt hat. Damit könnte es tatsächlich klappen.
 
  • Like
Reaktionen: peterhoffmann

peterhoffmann

Benutzer
Sehr erfahren
Mitglied seit
17. Dez 2014
Beiträge
6.057
Punkte für Reaktionen
1.855
Punkte
254
Code:
--syno-acl
funktioniert. ;-)

Vielen Dank für die Hilfe. :)
 
Zuletzt bearbeitet:
  • Like
Reaktionen: geimist


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat