Beschränken Sie den Dateizugriff nur auf Anhängen

11

Ich habe ein Verzeichnis mit Protokolldateien und füge Protokolle von Skripten, die von Benutzern gestartet wurden, in diese ein. Die Protokollierung mit Syslog scheint in diesem Fall nicht möglich zu sein. (Nicht-Daemon-Rsync)

Ich möchte, dass die Benutzer nur Schreibberechtigungen für Protokolldateien haben. Das Problem ist, dass die Schreibberechtigungen weiter eingeschränkt werden müssen, damit Benutzer (Skript) nur an diese Dateien anhängen können. Das zugrunde liegende Dateisystem ist XFS.

Folgendes funktioniert nicht:

# chattr +a test.log
chattr: Inappropriate ioctl for device while reading flags on test.log

Gibt es dafür eine andere Lösung? Vielen Dank für Ihre Hinweise.

Metalhead
quelle
Bist du sicher, dass es XFS ist? chattr +afunktioniert bei mir hier (3.2 Kernel). Beachten Sie, dass Sie root sein müssen, um verwendet zu werden chattr(eine $Eingabeaufforderung schlägt vor, dass kein Superuser verwendet wird), obwohl Sie eine andere Fehlermeldung erhalten, wenn dies chattr +aunterstützt wurde und Sie nicht root waren.
Stéphane Chazelas
Wird auch auf Serverfault veröffentlicht . Tu das nicht.
Gilles 'SO - hör auf böse zu sein'
Was sind die Mount-Optionen auf der Partition? Möglicherweise wird es mit xattr gespeichert, für das möglicherweise die entsprechende Mount-Option erforderlich ist. (Die Dokumentation für XFS erwähnt auch nicht viel darüber ...)
Gert van den Berg
Dies schloss auf SF, also lasse ich es hier offen
Michael Mrozek

Antworten:

8

Das chattrDienstprogramm wurde für ext2 / ext3 / ext4-Dateisysteme geschrieben. Es gibt Ioctls für die Dateien aus, sodass es dem zugrunde liegenden Dateisystem überlassen bleibt , zu entscheiden, was mit ihnen geschehen soll. Der XFS-Treiber in neueren Linux-Kerneln unterstützt dasselbe FS_IOC_SETFLAGSioctl wie ext [234], um Flags wie "Nur Anhängen" zu steuern. Möglicherweise führen Sie jedoch einen älteren Kernel aus, in dem dies nicht der Fall ist (CentOS?). Versuchen Sie stattdessen, das xfs_ioDienstprogramm zu verwenden:

echo chattr +a | xfs_io test.log

Beachten Sie, dass für XFS wie für ext [234] nur root das Nur-Anhängen-Flag ändern kann (genauer gesagt, Sie benötigen die CAP_LINUX_IMMUTABLEFunktion).

Gilles 'SO - hör auf böse zu sein'
quelle
1

Haben Sie die Berechtigung dazu? Von man 1 chattr:

Eine Datei mit dem Attribut "a" kann nur im Anhänge-Modus zum Schreiben geöffnet werden. Nur der Superuser oder ein Prozess mit der Funktion CAP_LINUX_IMMUTABLE kann dieses Attribut festlegen oder löschen.

Peterph
quelle
0

Alternativ können Sie dies auch mit SELinux erreichen Wenn Sie eine Red Hat-kompatible Distribution , ist es wahrscheinlich aktiviert und läuft. Dies funktioniert auf jedem Dateisystem. SELinux verhindert, dass Prozesse unzulässige Vorgänge ausführen.

Leider müssen Sie eine Richtlinie für Ihre Anwendung schreiben, um auf alle Systemressourcen zugreifen zu können, mit Ausnahme des Anhängens an bestimmte Dateien. Dies kann eine Herausforderung sein, wenn Sie dies zum ersten Mal tun, aber dies hat einen Vorteil - zusätzliche Sicherheitsebene.

In diesem Vortrag habe ich ein Beispiel für das Schreiben einer Nur-Anhängen-Dateiregel: https://www.youtube.com/watch?v=zQcYXJkwTns

lzap
quelle