In Perl können Sie die readlink()
Funktion das Ziel eines symbolischen Link, um herauszufinden.
Sie können auch die Funktion lstat()
verwenden, um die Berechtigungen des Symlinks zu lesen (im Gegensatz zu stat()
, die die Details der Datei lesen, auf die der Symlink verweist).
Das Festlegen des Eigentumsrechts für den neuen Symlink kann nicht ohne zusätzliche Hilfe durchgeführt werden, da Perl den Systemaufruf lchown()
nicht verfügbar macht. Dazu können Sie das Perl Modul von CPAN verwenden.
Unter der Annahme, ausreichende Berechtigungen (nb: nicht markiert Code)
use Lchown;
my $old_link = 'path to the symlink';
my $new_link = 'path to the copy';
my $dst = readlink($old_link);
my @stat = lstat($old_link);
symlink $dst, $new_link;
lchown $stat[4], $stat[5], $new_link; # set UID and GID from the lstat() results
Sie brauchen nicht über die Berechtigungen für den Symlink zu kümmern - sie erscheinen immer als -rwxrwxrwx
Danke. Ich habe nicht bemerkt, dass Symlinks keine echten Berechtigungen haben. Ich muss darüber nachdenken, wie dringend ich den Besitzer wechseln muss. – splintor
Beachten Sie auch, dass, wenn der Inhalt des Symlinks ein _relative_ Pfad ist, er möglicherweise neu geschrieben werden muss, wenn die $ old_link und $ new_link nicht im selben Verzeichnis sind! – Alnitak