Maskerade

In jeder erweiterten ACL taucht immer ein recht ominöser »mask« -Eintrag auf. Diese so genannte Maske beschreibt die maximalen Rechte, die ein Benutzer erlangen kann. Sollte die Maske restriktivere Rechte aufweisen, als man einem anderen Benutzer auf der ACL gewährt hat, so gewinnt grundsätzlich die Maske. Beispielsweise könnte Alice noch weiteren Mitgliedern aus Bobs Gruppe den Zugriff auf ihren Kalender erlaubt haben. Möchte Sie dies nun vorübergehend unterbinden, müsste Sie die Rechte für jedes Mitglied anpassen – oder mit einem Handgriff die Maske anpassen:

setfacl -m mask::r-- kalender.cal

Egal, welche Rechte die Benutzer vorher hatten, ab jetzt darf jeder den Kalender nur noch lesen. Das gilt selbst für Bob: Er besitzt zwar immer noch Schreibrechte auf den Kalender, da aber die Maske im Zweifelsfall Vorrang hat, bleiben auch ihm nur noch die einfachen Leserechte. Im Hintergrund führt Linux zur Berechnung der effektiven Rechte eine Und-Verknüpfung aus. Um eine Datei lesen zu dürfen, muss folglich der entsprechenden Benutzer beziehungsweise die Gruppe das Leserrecht besitzen und gleichzeitig müssen die Leserechte in der Maske passen.

Um dabei nicht ganz den Überblick zu verlieren, nennt »getfacl« in solchen Fällen explizit die tatsächlichen Rechte eines jeden Nutzers:

$ getfacl kalender.cal
# file: kalender.cal
# owner: alice
# group: ateam
user::rw-
user:bob:rw-    #effective:r--
group::r--
mask::r--
other::r--

Hier hat Bob zwar Schreibrechte, effektiv bleiben ihm unter dem Strich jedoch nur noch die Leserechte auf den Kalender.

Masken besitzen noch eine weitere Stolperfalle: »setfacl« verändert eigenmächtig die Maske, sobald man die Rechte eines Benutzers oder eine Gruppe ändert. Hat man, wie Alice, die Maske zuvor für eigene Zwecke missbraucht, kommt man nicht umhin, anschließend noch einmal ihren korrekten Sitz zu prüfen.

Standard

Während ihrer Zusammenarbeit erstellt Alice verschiedene Projektdateien, die auch Bob durchsehen muss. Für jedes neue Dokument müsste Alice folglich manuell die Rechte entsprechend anpassen. Glücklicherweise dürfen Verzeichnisse über eine so genannte Default-ACL verfügen. Die darin eingetragenen Zugriffsrechte erben automatisch alle in diesem Verzeichnis neu angelegten Dateien und Ordner. Letztere erhalten sowohl als eigene ACL, als auch als neue Default-ACL die, des übergeordneten Verzeichnisses. Eine neue Default-ACL erstellt man wieder über »setfacl« , ein Beispiel dafür zeigt Listing 1 .

Listing 1

Erstellen einer Default-ACL

 

»getfacl« listet alle Standardrechte grundsätzlich immer am Ende auf. Der Aufbau entspricht dem der herkömmlichen Einträge, nur dass diesmal noch ein »default« vorweg steht. Wer sich ausschließlich für die Default-Einträge interessiert, verwendet ein »getfacl -d« , während »getfacl -a« umgekehrt die Ausgabe der Default-Einträge unterdrückt.

comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023