2009-01-07 30 views

回答

8

在Perl中你可以使用readlink()功能找出一个符号链接的目标。

您也可以使用lstat()函数读取符号链接的权限(而不是stat(),它将读取符号链接指向的文件的详细信息)。

实际上,如果没有额外的帮助,就不能在新的符号链接上设置所有权,因为Perl不会公开lchown()系统调用。为此,您可以使用CPAN的Perl Lchown模块。

假设有足够的权限(注:未选中代码)

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 

你并不需要担心的符号链接的权限 - 他们总是显示为-rwxrwxrwx

+0

谢谢。我没有注意到符号链接没有真正的权限。我需要考虑我需要拥有者变化的程度。 – splintor 2009-01-07 13:30:23

+0

还指出,如果符号链接的内容是_relative_路径,那么如果$ old_link和$ new_link不在同一个目录中,则可能需要重写! – Alnitak 2009-01-07 13:49:17