Symlinks über SSH: Warum kann ich nicht auf Dateien / Verzeichnisse im übergeordneten Verzeichnis zugreifen, wenn der Zugriff auf das aktuelle Verzeichnis über einen Symlink erfolgte?

0

HINWEIS: Dieses Verhalten wird per Fernzugriff mit SSH beobachtet.

Mir ist aufgefallen, dass ich, wenn ich mit einem Symlink in ein Verzeichnis gezogen bin, das nicht verwenden kann .. Eintrag in der Verzeichnisliste, um wieder in das übergeordnete und dann in nachfolgende Verzeichnisse zu gelangen. Zum Beispiel:

/DirA/SymLinkToDirB
/DirA/SomeOtherFile.txt
/DirA/DirB
/DriA/DirC

/DirA/DirB/someFile.txt

Wenn ich gerade dabei wäre DirA und gab den folgenden Befehl aus: cd SymLinkToDirB dann eine nachfolgende pwd würde lösen /DirA/DirB, wie erwartet. Folgendes würde jedoch nicht funktionieren, wenn ich gerade in bin DirB über den symLink.

vim ../SomeOtherFile.txt, oder auch cd ../DirC

Weiter schlagen tab Bei der Verwendung von CD werden normalerweise die Verzeichnisse aufgelistet, in die ein Benutzer gelangen kann. Dieses Verhalten, das man auf einem lokalen Rechner erwartet und beobachtet, funktioniert jedoch auch nicht über SSH.

Jedoch folgendes tut Arbeit, wenn wir schon in sind DirB dort über den Symlink gekommen: cd ../SymLinkToDirB/, das ist eine ziemlich nutzlose Aktion. Es scheint, als ob sich der Symlink in einem eigenen Verzeichnis (dem übergeordneten Verzeichnis) befindet.

Zweifellos hat dies damit zu tun, wie Symlinks in SSH gehandhabt werden. Durch welchen Mechanismus werden Symlinks über SSH gehandhabt, die dieses Verhalten ermöglichen?

sherrellbc
quelle
Fragen Sie sich, was in den Augen des Entwicklers war?
rfportilla
Ich kann das, was Sie sehen, nicht reproduzieren. Sind Sie sicher, dass Sie einen symbolischen Link erstellt haben (mit ln -s )
Ash
@rfportilla, ein schrecklicher Grund zum Abstimmen. Nein, wenn Sie die letzten beiden Textblöcke lesen, lege ich es ziemlich klar. Ich behaupte, dass es damit zu tun haben muss, wie die Symlinks in Linux gehandhabt werden und frage, aus welchem ​​Grund es nicht wie erwartet funktioniert. Eine Erklärung, wie Symlinks funktionieren, würde die Antwort direkt geben.
sherrellbc
Ah, ja. Das ist die einzige Methode, die ich kenne, um sie tatsächlich zu erstellen. In diesem Fall wäre es so etwas ln -s /DirA/DirB/ /DirA einen symbolischen Link erstellen DirB und legen Sie es hinein DirA.
sherrellbc
Ich werde die Down-Abstimmung gerne entfernen, wenn Sie diesen Beitrag aktualisieren, um dies klar wiederzugeben. Die Frage, die ich in diesem Beitrag sehe, lautet im letzten Satz: "Warum funktionieren diese Befehle nicht wie erwartet?" Ich kenne Ihre Erwartungen nicht und ich weiß auch nicht, was die Entwickler bei der Erstellung der Funktionalität im Kopf hatten.
rfportilla

Antworten:

0

Das cd Befehl versucht, klug zu sein und sich genau zu erinnern, wie Sie Sie gelangen in das Verzeichnis, in dem Sie sich gerade befinden, und nimmt an, dass Sie denselben Pfad wieder ausführen möchten.

Sobald Sie sich jedoch im Verzeichnis befinden, können andere Befehle (z. B. vim ) wird das vorhandene sehen .. Verzeichnis und folgen Sie ihm durch das reale Dateisystem.

Was ich manchmal mache, ist cd symlinktoDirB/../DirB/.. . Verwenden Sie den zusätzlichen Satz von .. s wird zwingen cd um den tatsächlichen Dateisystempfad zu sehen und ihm zu folgen.

hymie
quelle