Warum können nicht privilegierte Benutzer den Dateibesitz nicht ändern?

15

Aus Chown (2):

Nur ein privilegierter Prozess (Linux: einer mit der CAP_CHOWN-Fähigkeit) kann den Eigentümer einer Datei ändern. Der Eigentümer einer Datei kann die Gruppe der Datei in eine beliebige Gruppe ändern, zu der dieser Eigentümer gehört. Ein privilegierter Prozess (Linux: mit CAP_CHOWN) kann die Gruppe beliebig ändern.

Was ist der Grund für diese Einschränkung? Warum kann ein nicht privilegierter Benutzer den Dateibesitz einer Datei nicht ändern (z. B. no / etc / shadow)?

$ touch blah
$ chown root:root blah
chown: changing ownership of `blah': Operation not permitted
Alexandru
quelle

Antworten:

27

Indem Sie Benutzern erlauben, Dateien zu "verschenken", laufen Sie in Konflikt mit verschiedenen Funktionen des Betriebssystems. Sowie:

Taking up another user's disk quota.
Impersonating another user (or even root) via setuid.
Having insufficient privileges to undo a mistaken chown.
Making it appear that someone else had created a given file.
Setting up cron jobs to run on other user's accounts.
And many more...
Chris Nava
quelle
8

Es ist nur eine persönliche Wahl der Linux - Designer nicht zu erlauben - alle der pseudo-Sicherheitsgründe gegeben , sind fadenscheinig, da Unix - Systeme, die dies ermöglichen.

Ich denke, dass diese Funktionalität darauf zurückzuführen ist, ob das Verhalten Ihres Unix 'System-V' (AT & T) oder Berkeleys Unix (BSD) gefolgt ist oder nicht ...

Wie für andere Sicherheitsprobleme erwähnt:

  • Identitätswechsel mit einem anderen Benutzer (oder sogar root) über setuid.

    Keine Ausgabe: Beim Ändern des Besitzers werden alle setXid-Bits gelöscht (U / G).

  • Nicht genügend Rechte, um einen fehlerhaften Chown rückgängig zu machen

    Kein wirkliches "Sicherheitsrisiko", ABER es könnte auf Systemen sein, die einen Benutzerwechsel erlauben. Sie können es zurückändern, wenn es sich in einem Verzeichnis befindet, das Sie besitzen. Andernfalls: "Vorsicht"!

  • Es scheint, als hätte jemand anderes eine bestimmte Datei erstellt.

    Es würde sich immer noch in einem Verzeichnis befinden, das von Ihnen beschreibbar ist. Das heißt, Sie könnten es nicht in ihr Homedir verschieben, es sei denn, Sie haben es für das Schreiben an Ihre Gruppe oder an alle geöffnet (oder Sie speziell, wenn ACLs verfügbar sind).

  • Einrichten von Cron-Jobs zur Ausführung auf Konten anderer Benutzer.

    Auch dies würde nicht funktionieren, da die Crondirs dem Benutzer gehören und nicht einmal für andere Benutzer lesbar , geschweige denn beschreibbar sein sollen.

  • Wenn jemand den Eigentümer ändern könnte, könnte jeder die Berechtigungen ändern, um Zugriff auf eine beliebige Datei auf dem System zu erhalten.

    Nein: Nur wenn der Benutzer das Verzeichnis 'besitzt', in dem sich diese Datei befindet. Dh ich kann eine Datei mit dem Namen 'passwd' an root übergeben, aber ich konnte sie nicht in / etc / verschieben, es sei denn, ich habe eine Schreibberechtigung für / etc /.

  • Quoten

    Ein potenziell gültiger Punkt - WENN Sie Kontingente verwenden, aber es scheint, als wäre es einfach zu erkennen, ob Sie den Speicherplatz nach Home-Verzeichnis aufsummieren. Das einzige Problem liegt in Verzeichnissen, die von mehreren Benutzern beschrieben werden können. In diesem Fall geht vielleicht der Besitzer dieses "Dir" vorbei. Es KANN der Fall auf diesen Systemen sein , dass die Unterstützung ‚verschenkt‘ -Dateien, dass Sie nur diese in Verzeichnissen tun können , dass Sie ‚eigenen‘, aber es ist eine lange Zeit, seit ich habe auf einem System tatsächlich gewesen , die dies ermöglicht, so Ich erinnere mich nicht an die genauen Einschränkungen.

Ich scheine mich daran zu erinnern, dass es einen Kompromiss für das Zulassen des Vergebens von Dateien gibt ... zB - auf Systemen, die dies zulassen, ist etwas anderes nicht erlaubt, was Linux erlaubt, aber ich kann mich nicht erinnern, was das war Hand...

Ich würde sagen, die obige "Antwort" sollte nicht als die Antwort markiert sein, da es NICHT die wirkliche Antwort ist. IT ist eher eine Designentscheidung - ich weiß nur nicht, was die Kompromisse waren.

Möglicherweise gibt es Sicherheitsprobleme, die nicht oben erwähnt wurden, aber die oben genannten sind nicht gültig.

IMO, es sollte ein vom System einstellbarer 'Wert' in "/ proc" sein, aber im Allgemeinen denke ich, dass es die meisten Leute nicht so sehr interessiert.

Wenn ein dringender Bedarf besteht, kann "chown" sicherheitsverbessert und geändert werden, um dies zu ermöglichen. Anschließend kann "root" mit "setuid" eingerichtet werden, um die Implementierung einer solchen Richtlinie zu ermöglichen.

Astara
quelle
Die Quoten werden immer basierend auf Datei Eigentum , nicht Standort . Sonst könnte jemand alles drin behalten /tmp.
user1686
+1, du scheinst verdammt richtig zu sein :). Auf OpenSolaris-Systemen (bei denen es sich in der Tat um einen Nachkommen von System V handelt) können Sie dies über eine mountOption festlegen (diese Einstellung kann daher auf einen einzelnen Einhängepunkt beschränkt werden, anstatt systemweit gemäß Ihrem vom System einstellbaren Wertevorschlag zu sein): rstchown(die Standardeinstellung ), um die Änderungen des Dateieigentümers auf den Root-Benutzer zu beschränken, norstchownum nichtprivilegierten Benutzern zu ermöglichen, den Eigentümer ihrer eigenen Dateien zu ändern (sie können diese nicht zurück ändern).
WhiteWinterWolf
6

Nun, wenn jemand den Eigentümer ändern könnte, könnte jeder die Berechtigungen ändern, um Zugriff auf eine beliebige Datei auf dem System zu erhalten. Dies ist nicht nur unter dem Gesichtspunkt der Malware (kein Sudo erforderlich), sondern auch unter dem Gesichtspunkt eines Systemadministrators schlecht. Wenn einer der Benutzer eine der Dateien ändern kann, sind die Dateiberechtigungen unbrauchbar.

Hallo71
quelle
2
Richtig. Ich habe die Frage dahingehend geändert, dass klar ist, dass ich mich auf Dateien beziehe, die dem Benutzer gehören, und nicht auf Dateien.
Alexandru
1
@Alexandru: Stellen Sie sich einen böswilligen Benutzer vor myTrojan.sh, der den Besitz von root annimmt und ein SUID-Flag hat.
Benjamin Bannier
@honk: macht jetzt Sinn.
Alexandru
5

Denn dann kann der Benutzer Dateisystemkontingenten ausweichen. Wenn ich eine Quote von 100MB habe und Sie eine Quote von 100MB haben, kann ich 100MB hochladen, ein + r ändern, Sie anzeigen und dann weitere 100MB hochladen.


quelle