So verhindern Sie, dass Benutzer Dateien mit Linux-Berechtigung ändern

8

Ist es mit dem Linux-Berechtigungsschema möglich, Benutzern das Erstellen von Dateien zu ermöglichen, diese jedoch zu einem späteren Zeitpunkt nicht zu bearbeiten oder zu löschen? Ich meine, wir haben einen Lieferordner, in dem Benutzer Artefakte ablegen, und wir möchten nicht, dass diese Artefakte nach der Lieferung geändert, dh bearbeitet oder gelöscht werden.

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

Antworten:

2

Das können Sie nicht tun: Wenn der Benutzer Dateien erstellen kann, gehören diese ihm und er kann sie ändern und löschen.

Ich wollte ein einfaches Schema vorschlagen, um ein Staging-Verzeichnis (in dem der Benutzer tun kann, was er will) und ein eingehendes Verzeichnis (für den Benutzer nicht zugänglich) mit einem kleinen privilegierten Programm zum Verschieben von Dateien aus dem Staging-Verzeichnis in das eingehende Verzeichnis zu haben Verzeichnis. Aber es ist tatsächlich schwierig, es richtig zu machen: Unter anderem müssen Sie darauf achten, dass das privilegierte Programm keine Dateien in anderen Verzeichnissen verschiebt (Vorsicht vor Rennbedingungen, symbolischen Links ../), vorhandene Dateien nicht überschreibt ( rename(3)atomar ist, aber kann) Löschen des Ziels), lässt den Benutzer keinen Dateideskriptor geöffnet und ändert die Datei nach dem Verschieben (Sie sollten also besser kopieren als verschieben). Stattdessen empfehle ich eine vorhandene, robuste Lösung:

  • Lassen Sie den Benutzer die Datei über HTTP hochladen.
  • Lassen Sie den Benutzer ein Versionskontrollsystem festlegen. Er kann auch neue Versionen festlegen.
Gilles 'SO - hör auf böse zu sein'
quelle
1

Ist es mit dem Linux-Berechtigungsschema möglich, Benutzern das Erstellen von Dateien zu ermöglichen, diese jedoch zu einem späteren Zeitpunkt nicht zu bearbeiten oder zu löschen?

NEIN

Sie haben jedoch andere Optionen, wie von @Fredrik im Kommentar zu Ihrer Frage vorgeschlagen. Siehe hier.

ssapkota
quelle
0

Hier ist ein Ansatz, der theoretisch funktionieren sollte. Es ist zu viel Aufwand für mich, auch nur einen Proof-of-Concept zu entwickeln. Sie können es aus dem gleichen Grund ablehnen. Und genau genommen bedeutet dies nicht, dass das Linux-Berechtigungsschema verwendet wird.

  • Holen Sie sich einen Open Source-Dateiserver.
  • Ändern Sie es, um die gewünschten Regeln durchzusetzen (dh Benutzer können Dateien in Verzeichnissen erstellen, auf die sie Schreibzugriff haben, und unmittelbar nach dem Erstellen in eine Datei schreiben. Danach kann nur noch root eine Datei zum Schreiben öffnen oder die Verknüpfung aufheben es).
  • Richten Sie einen Server-Host ein, auf dem Ihre geänderte Serversoftware ausgeführt wird. Theoretisch könnte es Ihr lokaler Gastgeber sein; Stellen Sie einfach sicher, dass das Verzeichnis, aus dem es arbeitet, nicht öffentlich zugänglich ist.
  • NFS mounten Sie Ihre /mnt/deliveryund weisen Sie Ihre Benutzer an, ihre Dateien dort abzulegen.
Scott
quelle
0

Die einfache Antwort besteht darin, ein Skript in einem bestimmten Intervall auszuführen, das Sie auswählen (z. B. alle 15 Minuten), das einem vorgegebenen "Administrator" -Benutzer den Besitz aller Dateien im Verzeichnis "upload" neu zuweist und die Berechtigungen auf "644" setzt. Auf diese Weise können alle Benutzer schreibgeschützt auf alle Dateien im Upload-Verzeichnis zugreifen, einschließlich der Dateien, die sie selbst hochgeladen haben. Natürlich können Sie das Skript nach dem ersten Durchlauf optimieren, um nur die Dateien mit Erstellungsdaten nach dem vorherigen Durchlauf des Skripts zu durchsuchen (z. B. in den letzten 17 Minuten).

Michael Yaeger
quelle