为什么符号链接的权限默认为全权许可?

时间:2014-04-09 22:35:53

标签: unix permissions symlink inode

使用ln创建硬链接时:

ln testfile.txt testfile2.txt

由带有ls -li的inode表中的两个别名的相同inode编号确认的文件硬链接与具有原始名称的文件具有相同的硬链接文件初始权限:

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

但是,当我创建符号链接时:

ln -s testfile.txt testfile3.txt

并使用之前的ls命令再次确认,它显示它是权限列表中l的软链接。但是,我的符号链接具有所有用户类型(组,用户和其他)的所有权限:

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

这让我想到了我的问题:

  1. 为什么符号链接的初始权限是允许的?我知道这是一个不同的文件类型,但为什么它以所有初始权限开始?从UNIX/Linux.SE上的问题,我发现目录的默认权限是777,这与我的符号链接的权限相同。目录和符号链接的权限是否以某种方式相关?

  2. 如何创建与原始权限具有相同初始权限的符号链接?具体来说,我想要这样做的原因是我想写一个shell脚本进入单个文件系统,并根据文件类型制作硬链接和软链接,我希望它保留权限。

1 个答案:

答案 0 :(得分:2)

你在做哪个平台? 如果您使用的是linux,那么根本就不会使用符号链接权限,因此无论他们的价值如何,都无人问津。在BSD,OSX或其他风格上可能会有所不同。

我猜这个问题可以在unix子论坛上得到更好的解答。

  

我发现目录的默认权限是777

嗯,我真的不知道你从哪里得到的。文件和目录的默认权限(仍然在linux上)只取决于进程的umask。请参阅man umask