Verständnisfrage ACL

  • Ich möchte in einem Verzeichnis (inkl. Unterverzeichnis und Dateien) dauerhaft folgende Rechte setzen:

    Code
    user1:user1
    Dateien: 644
    Verzeichnisse 755

    Folgendermaßen bin ich vorgegangen

    Code
    chown -R user1:user1 /opt/verzeichnis
    find /opt/verzeichnis -type d -exec chmod 755 {} \;
    find /opt/verzeichnis -type f -exec chmod 644 {} \;
    
    
    setfacl -R -m d:u:user1:rwX,d:g:user1:rwX,d:o:rX /opt/verzeichnis

    Das Problem ist, dass ein Tool in das Verzeichnis schreibt und dabei die Rechte entsprechend anders setzt

    root:user2

    Dateien: 660

    Verzeichnisse 755

    Ich bin davon ausgegangen, wenn ich setfacl als default setze, dass dies auch auf zukünftige Dateien/Verzeichnisse vererbt wird.

  • ACL dienen, wie das "A(ccess)" suggeriert, der Zugriffsrechtsverwaltung. Eigentumsrechte (ownership) können bzw. sollen dadurch gerade übersteuert werden, nicht aber überschrieben.

    Das (nicht weiter benannte) "Tool [welches] in das Verzeichnis schreibt" verfügt offenbar über Rootrechte – womit es ihm sowieso möglich ist, seinerseits alle Zugriffs- und Eigentumsrechte vermittels explizitem chown/chmod zu setzen, wie es beliebt.

    Mittels "find /opt/verzeichnis -type d -exec chmod u+rwxs,ug+rxs {} \;" lassen sich allenfalls noch Ausführungsrechte setzen (vgl. man chmod), was die Gruppenzugehörigkeit vererbt, aber keine Auswirkung auf die Nutzerzuordnung neuer Dateien hat.

    EDIT: Die einfachste Möglichkeit, das gewünschte Verhalten (einheitliche Eigentums- und Zugriffsrechte) zu realisieren, wäre die Einbindung eines CIFS-/NFS-Mounts unter /opt/verzeichnis.

    VServer IOPS Comparison Sheet: https://docs.google.com/spreadsheets/d/1w38zM0Bwbd4VdDCQoi1buo2I-zpwg8e0wVzFGSPh3iE

    Einmal editiert, zuletzt von m_ueberall (22. November 2024 um 19:55)

  • Danke erst mal für die Erklärung. Ein NFS/CIFS Mount ist leider nicht möglich. Gegenfalls wäre die Einbindung einer zusätzlichen ext4 Partition bzw Laufwerks unter /opt/verzeichnis möglich. Das würde allerdings auch das Verhalten nicht beeinflussen. Gibt es eventuell noch andere Möglichkeiten?

  • Die Gruppenzugehörigkeit von neu angelegten Dateien kannst du mit chmod g+s directory auf die Gruppe des Verzeichnisses festlegen. Der User, der die Datei anlegt, muss dabei nicht mal Mitglied der Gruppe sein. Für den Owner der Datei gibt es diese Möglichkeit in Linux nicht, aber FreeBSD kann das.

    Eine Option, den Eigentümer und die Gruppe von Dateien fest vorzugeben, kennen die Ext-Dateisysteme und die meisten anderen nicht. Es gibt aber ein FUSE-Dateisystem, mit dem das geht: bindfs. Damit würdest du ein Verzeichnis so auf eine bestimmte Eigentümer/Gruppe-Kombination zwingen: sudo bindfs -u UID -g GID Quellverzeichnis Mount-Point. Es gibt auch die Möglichkeit, nur bestimmte Benutzer und Gruppen umzumappen.

    2 Mal editiert, zuletzt von NaN (22. November 2024 um 21:11)

  • Gibt es eventuell noch andere Möglichkeiten?

    Die einzige andere "saubere" Möglichkeit mit einem ganz anderen Komplexitätsgrad und deutlich höherem Aufwand wäre die Modifikation der entsprechenden Kernel-syscalls (zufällig ausgewählte Fundstelle zum Thema siehe hier); hierzu sind mir keine existierenden Projekte bekannt; ein derartiger Ansatz wäre zudem potenziell wartungsintensiv, da theoretisch jedes größere Kernelupgrade die entsprechenden Schnittstellen ändern kann.

    Alternativ wäre ggf. die Modifikation/Anpassung eines Overlay-Dateisystems denkbar (wobei ich aus dem Stegreif nicht sicher bin, ob die Funktionalität hier ggf. nicht schon existiert), aber das senkt Komplexität/Aufwand kaum (eher im Gegenteil!) und ist eher instabiler als die Modifikation existierender syscalls.

    Natürlich könnte man regelmäßig mithilfe eines Wrappers und/oder cronjobs für das genannte Tool nachträglich die Eigentums-/Zugriffsrechte anpassen (die Frage ist, ob das nicht zu Seiteneffekten führen kann). Will man die Originalinformationen nicht verlieren, könnte man statt einer einfachen Modifikation der Originaldateien auch ein /opt2/verzeichnis einführen, welches eine initiale Kopie der Dateien/Verzeichnisse enthält und worauf das Tool zugreift, während im Nachgang eine Kopie unter /opt/verzeichnis synchronisiert wird, welche die gewünschten Eigentumsrechte besitzt. Das ist allerdings sehr unsauber und bietet selbstverständlich nicht dieselbe Sicherheit wie ein CIFS-/NFS-Mount oder die syscall-Modifikation.

    EDIT: Da gibt es bindfs seit >10 Jahren – sogar als Debian- oder Ubuntu-Paket – und es ist mir bis dato noch nie untergekommen! 8o

    VServer IOPS Comparison Sheet: https://docs.google.com/spreadsheets/d/1w38zM0Bwbd4VdDCQoi1buo2I-zpwg8e0wVzFGSPh3iE

    3 Mal editiert, zuletzt von m_ueberall (22. November 2024 um 21:18)

  • bindfs kannte ich bis dato auch nicht. Wenn ich das auf die Schnelle richtig gelesen habe, ist es grob mit mount -o bind vergleichbar, nur das hier halt z.B. uid und gid festgelegt werden kann. Werde ich mir auf der Test VM mal genauer anschauen.

    Ja, per Wrapper löse ich das aktuell auch. Ist nicht ganz sauber, würde zur Not erstmal funktionieren.