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

Chr*_*rie 5 unix permissions symlink inode

当我使用ln以下方法创建硬链接时:

ln testfile.txt testfile2.txt
Run Code Online (Sandbox Code Playgroud)

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

1222285 -rw-------   2 cs9****-**  cs******        98 Apr  9 15:00 testfile.txt
1222285 -rw-------   2 cs9****-**  cs******        98 Apr  9 15:00 testfile2.txt
Run Code Online (Sandbox Code Playgroud)

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

ln -s testfile.txt testfile3.txt
Run Code Online (Sandbox Code Playgroud)

并使用上一个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
Run Code Online (Sandbox Code Playgroud)

这让我想到了我的问题:

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

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

New*_*biZ 2

您在哪个平台上工作?如果您使用的是 Linux,则根本不会使用符号链接权限,因此无论其值如何,没有人关心。这在 BSD、OSX 或其他版本上可能有所不同。

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

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

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