Hardlink-Erstellung - Berechtigungen?

16

Welche Berechtigungen wirken sich auf die Erstellung von Hardlinks aus? Ist der Besitz von Dateien selbst wichtig?


Angenommen, der Benutzer alicemöchte einen Hardlink zu der Datei target.txtin einem Verzeichnis erstellen target-dir.

  • Welche Berechtigungen sind alicefür beide target.txtund erforderlich target-dir?
  • Wenn der target.txtBenutzer Eigentümer ist billund der Benutzer target-dirEigentümer ist chad, ändert sich dadurch etwas?

Ich habe versucht, diese Situation zu simulieren, indem ich die folgende Ordner- / Dateistruktur in einem ext4Dateisystem erstellt habe:

#> ls -lh . *
.:
drwxr-xr-x 2 bill bill 60 Oct  1 11:29 source-dir
drwxrwxrwx 2 chad chad 60 Oct  1 11:40 target-dir

source-dir:
-r--r--r-- 1 bill bill 0 Oct  1 11:29 target.txt

target-dir:
-rw-rw-r-- 1 alice alice 0 Oct  1 11:40 dummy

Während alicesie einen Softlink zu target.txterstellen kann, kann sie keinen Hardlink erstellen:

#> ln source-dir/target.txt target-dir/
ln: failed to create hard link ‘target-dir/target.txt’ => ‘source-dir/target.txt’: Operation not permitted

Wenn alicebesitzt target.txtund keine Berechtigungen geändert werden, gelingt es die hart-link. Was vermisse ich hier?

gcscaglia
quelle
Ist das für eine Aufgabe? Dies kann sich auf die Art der Antworten auswirken, die einige geben werden, wenn dies der Fall ist (nicht, dass es nicht zulässig wäre, eine Frage zu einem Auftrag zu stellen). Haben Sie schon versucht, dieses Szenario zu erstellen und zu sehen, was passiert?
Eric Renouf
Nein, es ist nicht für eine Aufgabe. Ich stelle mich genau diesem Szenario und habe einige Vermutungen, aber ich dachte, es wäre besser, von einem theoretischen Standpunkt aus zu fragen. In meinem Fall kann ich den Hardlink unabhängig von target.txtund target-dirBerechtigungen nicht erstellen , es sei denn, ich bin sudoroot.
gcscaglia
Feste Links haben dieselben Eigentumsrechte und Berechtigungen wie der Zugriff auf die Originaldatei.
Teppic
@teppic Meine Schwierigkeit besteht darin, nicht auf den erstellten Hardlink zuzugreifen, sondern den Hardlink wie alicefolgt zu erstellen. Ich kann sowohl auf die Originaldatei als auch auf einen Hardlink (der mit erstellt wurde sudo) zugreifen , aber ich kann den Link nicht wie folgt erstellen der Benutzer, aliceobwohl wir uns alle einig sind, dass diese Berechtigungen ausreichen sollten.
Gcscaglia

Antworten:

18

Zum Erstellen des Hardlinks sind in allen Fällen Berechtigungen aliceerforderlich . Die Berechtigungen, die für benötigt werden, variieren:write+executetarget-dirtarget.txt

  • Benötigt fs.protected_hardlinks = 1dann aliceentweder Besitzrechte target.txtoder zumindest read+writeBerechtigungen dafür.
  • Wenn fs.protected_hardlinks = 0dann eine Reihe von Berechtigungen ausreicht; Sogar 000 ist okay.

Diese Antwort auf eine ähnliche Frage enthielt die fehlenden Informationen zur Beantwortung dieser Frage.

Von http://kernel.opensuse.org/cgit/kernel/commit/?id=800179c9b8a1 [Hervorhebung meiner]:

Hardlinks:

Auf Systemen mit benutzerbeschreibbaren Verzeichnissen auf derselben Partition wie Systemdateien besteht eine langjährige Klasse von Sicherheitsproblemen in dem auf Hardlinks basierenden Zeit-für-Check-Zeit-Rennen, das am häufigsten in weltweit beschreibbaren Verzeichnissen auftritt like / tmp. Die übliche Methode zur Ausnutzung dieses Fehlers ist das Überschreiten von Privilegiengrenzen, wenn einem bestimmten Hardlink gefolgt wird (dh ein Root-Prozess folgt einem von einem anderen Benutzer erstellten Hardlink). Darüber hinaus besteht ein Problem, bei dem Benutzer eine potenziell anfällige setuid / setgid-Datei "pinnen" können, sodass ein Administrator ein System nicht vollständig aktualisiert.

Die Lösung besteht darin, das Erstellen von Hardlinks nur zuzulassen, wenn der Benutzer bereits der Eigentümer der vorhandenen Datei ist oder über Lese- / Schreibzugriff auf die vorhandene Datei verfügt .

gcscaglia
quelle
Vielen Dank! Dies ist, was ich für einen Tag auf Debian 9 gekämpft habe!
Arda
Warum würde ich "Operation nicht erlaubt" bekommen, selbst wenn ich rwx perms im Verzeichnis und rw perms in der Datei habe?
Michael
1

alicebenötigt mindestens Leserechte für target.txtund Schreib- und Ausführungsrechte für target-dir.

Die Berechtigungsstruktur funktioniert nun als dreifach getrennte Menge:

  1. Benutzerberechtigungen: gelten für den Benutzer , dem der Knoten gehört.
  2. Gruppenberechtigungen: gelten für alle Benutzer, die zur Gruppe gehören, der der Knoten gehört.
  3. Berechtigungen anderer : Gilt für alle anderen Benutzer / Gruppen , denen der Knoten nicht gehört.

Daher wirkt sich die Eigentumsfrage nur auf die folgenden Berechtigungen aus alice:

  • Wenn alicees sich um den Eigentümer handelt, müssen die erforderlichen Berechtigungen im Bereich "Benutzer" enthalten sein.
  • Wenn alicees sich um einen Teil der Gruppe handelt, der es gehört, müssen die erforderlichen Berechtigungen im "Gruppenteil" enthalten sein.
  • Wenn alicees nicht gehört und nicht Teil der Gruppe ist, der es gehört, müssen die erforderlichen Berechtigungen im "anderen" Teil vorhanden sein.
dave_alcarin
quelle
Das habe ich auch gedacht. In meiner Situation target.txthabe ich jedoch 444 Berechtigungen und target-dir777 Berechtigungen. Ich kann jedoch keine feste Verknüpfung erstellen, es sei denn, ich bin als Root angemeldet oder ich besitze die Datei, zu der ich verknüpfe. Seltsamerweise funktioniert ein Softlink so, wie Sie es beschreiben.
Gcscaglia
Diese Informationen wären nützlich, um in der Frage selbst zu haben, ich empfehle Ihnen, sie zu aktualisieren. Seltsamerweise habe ich vorher nicht daran gedacht ... aber unterstützt das Dateisystem, in dem Sie arbeiten, zunächst Unix-ähnliche Besitzrechte / Berechtigungen?
Dave_alcarin
Ja, es ist ein out-of-the-box ext4 auf einem Fedora 21-System. Der Link funktioniert, wenn ich der Eigentümer der Datei bin.
Gcscaglia