Symbolischer Link funktioniert nicht, verwendet Standard-UBUNTU 16 LTS… Es zeigt „Erlaubnis verweigert“, wo ich erwartet hatte, Zugriff zu erhalten, funktioniert auch nach chown
nicht .
Vollständiges Beispiel:
sudo rm /tmp/file.txt # if exist, remove
cd ~
sudo chmod 666 data/file.txt
ls -l data/file.txt # "-rw-rw-rw-" as expected
more data/file.txt # working fine
sudo ln -sf $PWD/data/file.txt /tmp/file.txt # fine
ls -l /tmp/file.txt # "lrwxrwxrwx", /tmp/file.txt -> /home/thisUser/file.txt
more /tmp/file.txt # fine
sudo chown -h postgres:postgres /tmp/file.txt
sudo more /tmp/file.txt # NOT WORK! but its is sudo! and 666!
Akzeptierte Antwort:
Diese Aktionen sollten zu einer Fehlermeldung führen:Berechtigung verweigert . Das Verzeichnis /tmp
, hat Berechtigungen einschließlich des Sticky-Bits. Der Fehler ist ein Ergebnis der Kernelkonfiguration für fs.protected_symlinks
.
Um die Einstellung anzuzeigen, sysctl fs.protected_symlinks
. Dies entspricht 1
wenn eingestellt. Vorübergehend zu deaktivieren, was nicht empfohlen wird , sysctl -w fs.protected_symlinks=0
. Dauerhaft auszuschalten, was wiederum nicht empfohlen ist verwenden Sie /etc/sysctl.conf
.
Siehe patchwork.kernel.org für weitere Informationen.
Um Linkfäule zu vermeiden, folgen die führenden zusammenfassenden Absätze zu symbolischen Links aus dem Hyperlink.
Kees Cook – 2. Juli 2012, 20:17 Uhr
Dies fügt dem Linux VFS Symlink- und Hardlink-Einschränkungen hinzu.
Symlinks:
Eine seit langem bestehende Klasse von Sicherheitsproblemen ist der Symlink-basierte
Time-of-Check-Time-of-Use-Wettlauf, der am häufigsten in weltweit beschreibbaren
Verzeichnissen wie /tmp zu sehen ist. Die übliche Methode zur Ausnutzung dieses Fehlers
besteht darin, Privilegiengrenzen zu überschreiten, wenn einem bestimmten Symlink gefolgt wird (d. h. ein
Root-Prozess folgt einem Symlink, der einem anderen Benutzer gehört). Eine wahrscheinlich
unvollständige Liste mit Hunderten von Beispielen im Laufe der Jahre finden Sie unter:http://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=/tmp
Die Lösung besteht darin, Symlinks nur dann zu folgen, wenn sie sich
außerhalb eines Sticky World-Writable-Verzeichnisses befinden, oder wenn die UID des Symlinks und
Follower übereinstimmen, oder wenn der Eigentümer des Verzeichnisses mit dem Eigentümer des Symlinks übereinstimmt.