2014-04-09 3 views
5

Wenn ich eine feste Verbindung mit ln erstellen:Warum sind die Berechtigungen einer symbolischen Verbindung standardmäßig auf all-permissive?

ln testfile.txt testfile2.txt 

Die Datei Hardlink, bestätigt durch die gleichen Inode-Nummern für beide Aliase in der Inode-Tabelle mit ls -li, hat die gleichen anfänglichen Berechtigungen für die hardlinked Datei als Datei mit dem ursprünglichen Namen:

1222285 -rw------- 2 cs9****-** cs******  98 Apr 9 15:00 testfile.txt 
1222285 -rw------- 2 cs9****-** cs******  98 Apr 9 15:00 testfile2.txt 

Wenn ich eine symbolische Verbindung, aber:

ln -s testfile.txt testfile3.txt 

und bestätigen Sie erneut mit dem vorherigen ls Befehl, es zeigt, dass es sich um eine weiche Verknüpfung mit l in der Berechtigungsliste handelt. Aber meine Symlink hat alle Berechtigungen für alle Benutzertypen (Gruppen, Benutzer und andere):

1222285 -rw------- 2 cs9****-** cs******  98 Apr 9 15:00 testfile2.txt 
1222285 -rw------- 2 cs9****-** cs******  98 Apr 9 15:00 testfile.txt 
1222286 lrwxrwxrwx 1 cs9****-** cs******  12 Apr 9 15:08 testfile3.txt -> testfile.txt 

Das bringt mich auf meine Fragen:

  1. Warum sind die anfänglichen Berechtigungen ein symbolischer Link all-permissive? Ich verstehe, dass das ist ein anderer Dateityp, aber warum beginnt es mit allen anfänglichen Berechtigungen? Aus einer Frage auf UNIX/Linux.SE entdeckte ich, dass die Standardberechtigungen für ein Verzeichnis 777 sind, die die gleichen Berechtigungen wie meine symbolische Verbindung sind. Stehen die Berechtigungen eines Verzeichnisses und eines symbolischen Links in irgendeiner Beziehung zueinander?

  2. Wie kann ich Symlinks erstellen, die dieselben ursprünglichen Berechtigungen wie das Original haben? Der Grund, warum ich das möchte, ist, dass ich ein Shell-Skript schreiben möchte, um in ein einzelnes Dateisystem zu gehen und je nach Dateityp feste Links und weiche Links zu erstellen, und ich möchte, dass die Berechtigungen erhalten bleiben.

Antwort

2

An welcher Plattform arbeiten Sie? Wenn Sie auf Linux sind, dann werden Symlink-Berechtigungen überhaupt nicht verwendet, also egal welchen Wert sie interessieren. Das könnte bei BSD, OSX oder anderen Geschmacksrichtungen anders sein.

Diese Frage könnte besser auf Unix-Sub-Forum beantwortet werden, denke ich.

Ich entdeckte, dass die Standardberechtigungen für ein Verzeichnis sind 777

Hmm, ich weiß wirklich nicht, wo Sie das von zu bekommen. Die Standardberechtigungen für Dateien und Verzeichnisse (immer noch unter Linux) hängen nur von der Umask des Prozesses ab. Siehe man umask.

+0

haha ​​... gelernt, wie man unmask verwenden. Ich weiß noch nicht, wie ich das für meinen Zweck verwenden soll, aber es ist ein Anfang, mit dem ich spielen kann. Vielen Dank! –

Verwandte Themen