Warum den Besitzer eines symbolischen Links unter Linux ändern?

12

Unter Linux ist es möglich, den Eigentümer oder den Gruppenbesitzer eines symbolischen Links (Symlink) zu ändern. Ich habe mich gefragt, warum jemand das tun möchte, da die Berechtigungen eines Symlinks beim Zugriff auf eine Datei nicht verwendet werden.

Ich kann mir nur einen Anwendungsfall vorstellen, bei dem es nützlich sein könnte: einem Benutzer das Löschen eines Symlinks in einem Verzeichnis mit Sticky Bit zu ermöglichen.

Kennen Sie andere Fälle, in denen es nützlich sein könnte, den Eigentümer oder Gruppenbesitzer eines Symlinks zu ändern?

user368507
quelle

Antworten:

6

Angenommen, root arbeitet in einem Verzeichnis, in das Eve schreiben kann. fooIn diesem Verzeichnis befindet sich eine Datei , die geändert werden muss, um zu Eve zu gehören. Also Wurzeltypen chown eve foo. Aber kurz bevor root Enter drückt, rennt Eve ln -sf /etc/passwd foo. Jetzt /etc/passwdgehört Eva! Wenn root ausgeführt werden kann chown -h eve foo, um sicherzustellen, dass Symlinks nicht befolgt werden, besteht der größte Schaden darin, dass eine andere Datei im selben Verzeichnis so geändert wurde, dass sie zu Eve gehört.

lchownDies ist auch praktisch, wenn Sie den Eigentümer eines Verzeichnisbaums ändern. Sie müssen sich keine Sorgen machen, dass eine Datei außerhalb des Baums versehentlich betroffen ist, da Sie chowneinen symbolischen Link aufgerufen haben .

Gilles 'SO - hör auf böse zu sein'
quelle
"Wenn root chown -h bob foo ausführen kann, um sicherzustellen, dass keine Symlinks befolgt werden, besteht der größte Schaden darin, dass eine andere Datei im selben Verzeichnis so geändert wurde, dass sie zu Eve gehört." Ich denke du meinst "chown -h eve foo". Die andere Datei, die geändert werden könnte, ist der symbolische Link, stimmt's?
user368507
@ user5528 Die andere Datei ist möglicherweise kein Symlink: Eve kann weiterhin ausgeführt werden mv myfile foo, und root ändert am Ende den Eigentümer von myfile. Muss myfileaber eine Datei sein, die Eve erstellen oder in dieses Verzeichnis verschieben kann, es darf keine Datei auf dem System sein.
Gilles 'SO - hör auf böse zu sein'
2
Obwohl interessant und offensichtlich vom Fragesteller gebilligt, sehe ich nicht, wie diese Antwort die Frage beantwortet. Es scheint eher zu erklären, warum man dies chown -hals Vorsichtsmaßnahme verwenden kann, wenn man den Besitz einer Datei ändert, die kein Symlink sein soll, aber dennoch sein könnte (ein Randfall, IMO). Es erklärt nicht, warum man den Besitz einer Datei ändern möchte, die eigentlich als Symlink gedacht ist, wie in der Frage gestellt.
Ivan X
Warum sollten Sie chownden Eigentümer einer "Datei außerhalb des Baums" ändern? Sie ändern lediglich den Eigentümer des Verzeichnisses.
Melab
@Melab Wenn Sie den Eigentümer eines Verzeichnisbaums ändern , dh das Dienstprogramm deaktivieren chown -R, das den (l)chownSystemaufruf für jeden Verzeichniseintrag aufruft . Wenn der Verzeichniseintrag ein symbolischer Link ist, dürfen Sie den chownSystemaufruf nicht aufrufen, da dies das Ziel des Links beeinflussen würde, das sich möglicherweise außerhalb des Baums befindet.
Gilles 'SO - hör auf böse zu sein'
8

Apache kann so konfiguriert werden, dass es nur dann Symlinks folgt, wenn der Eigentümer des Links mit dem Eigentümer des Ziels übereinstimmt. Dies kann verhindern, dass Benutzer Links für den Webzugriff auf Dateien erstellen, die sie nicht besitzen (z. B. / etc / passwd).

... Nehmen wir also an, Sie als Root wollten , dass Apache einem Link folgt, um eine bestimmte Protokolldatei anzuzeigen, die xymon oder etwas anderem gehört, aber Sie wollten die Sicherheit von Apache nicht lockern, indem Sie ihm erlauben, Symlinks unabhängig vom Eigentümer zu folgen . Dann möchten Sie vielleicht xymon zum Eigentümer des Symlinks machen.

Lars Rohrbach
quelle
1
Okay. Ich weiß, dass es nichts damit zu tun hat, aber wozu dient dieses Verhalten bei Apachen? Ich meine, wenn der Benutzer die Datei lesen kann, warum sollte er sie dann über den Webzugriff lesen? thx
user368507
Nun, es ist nicht nur ein lokaler Benutzer, der die Datei liest. Wenn Apache es lesen kann, kann es möglicherweise jeder lesen. Und wenn eine Apache-Sicherheitsanfälligkeit die Erstellung eines Symlinks zu erlaubt /etc/passwd, hat der Badguy möglicherweise Lesezugriff auf diese Datei, ohne über einen anderen lokalen Zugriff zu verfügen - würde jedoch durch den Symlink, der Apache gehört, vereitelt.
Lars Rohrbach
4

Die erste Antwort scheint die Frage nicht zu beantworten, und die zweite gilt nur für Apache.

Eine Sache, die ich mir für Linux im Allgemeinen vorstellen kann, ist, dass es einem normalen Benutzer nur möglich ist, einen festen Link zu einem symbolischen Link herzustellen, wenn der Benutzer der Eigentümer des symbolischen Links ist. Warum man so einen Link machen möchte, weiß ich nicht.

Eine andere Sache ist, dass ein gewöhnlicher Benutzer den Gruppenbesitz einer Datei nur ändern kann, wenn der Benutzer die Datei besitzt (und auch Mitglied der Gruppe ist, zu der die Datei hinzugefügt wird). Dies wirft die Frage auf, wovon der Gruppenbesitz ist eine symbolische Verknüpfung tut. In einer Organisation kann es als Tag nützlich sein, anzugeben, welches Team den Link benötigen würde.

Zumindest unter Ubuntu kann jeder den Zeitstempel eines symbolischen Links aktualisieren. Es kann jedoch einige Systeme geben, die dies nur dem Eigentümer erlauben. Ich bin mir nicht sicher, was der Zeitstempel für einen symbolischen Link bringt, aber er kann nützliche Informationen darüber geben, wie oft er verwendet wird.

Bearbeiten: Ich habe gerade einen weiteren Grund erkannt, warum Eigentum wichtig sein würde. Der Link kann sich in einem klebrigen Verzeichnis befinden, in dem nur der Eigentümer einer Datei sie löschen oder umbenennen kann.

ein anderer Mann
quelle
0

Ich habe ein Programm, das an eine Protokolldatei angehängt wird. Diese Protokolldateien werden monatlich mit jeweils einem anderen Namen erstellt. Anstatt die Software den genauen Dateinamen herausfinden zu lassen, verwende ich einen "generischen" Dateinamen (z. B. data.log), einen symbolischen Link, der auf die aktuelle Datei für diesen Monat verweist. Dies wird bei einem Cron-Job automatisiert.

Wenn jetzt eine neue monatliche Datei erstellt wird, muss der symbolische Link auf die neue Datei verweisen. Wenn ein Eigentümer- / Gruppenkonflikt vorliegt, kann die Software die symbolische Verknüpfung nicht ändern. Sie benötigen also Eigentums- / Gruppenschreibrechte, um die symbolische Verknüpfung zu ändern.

user173610
quelle
0

Wenn Sie einen Link zu einer Datei auf Ihrem Startbildschirm haben möchten, muss sich der symbolische Link in der befinden

"/ home / username / Desktop"

Verzeichnis.

Und der symbolische Link selbst muss root: root (0: 0) besitzen, sonst funktioniert der Link nicht.

(Ubuntu / Debian etc.)

Helen Craigman
quelle