unix - 为什么符号链接(symbolic link)的权限默认为all-permissive?

标签 unix permissions symlink inode

当我使用 ln 创建硬链接(hard link)时:

ln testfile.txt testfile2.txt

文件硬链接(hard link),由 inode 表中两个别名的相同 inode 编号确认,ls -li , 对硬链接(hard link)文件具有与具有原始名称的文件相同的初始权限:
1222285 -rw-------   2 cs9****-**  cs******        98 Apr  9 15:00 testfile.txt
1222285 -rw-------   2 cs9****-**  cs******        98 Apr  9 15:00 testfile2.txt

但是,当我创建符号链接(symbolic link)时:
ln -s testfile.txt testfile3.txt

并与之前的 ls 再次确认命令,它显示它是与l 的软链接(soft link)在权限列表中。但是,我的符号链接(symbolic link)对所有用户类型(组、用户和其他)具有所有权限:
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

这让我想到了我的问题:
  • 为什么符号链接(symbolic link)的初始权限是全许可的? 我知道这是一种不同的文件类型,但为什么它以所有初始权限开始?来自 UNIX/Linux.SE 上的问题,我发现一个目录的默认权限是777,恰好和我的符号链接(symbolic link)的权限相同。目录和符号链接(symbolic link)的权限是否有某种关联?
  • 如何创建具有与原始权限相同的初始权限的符号链接(symbolic link)? 具体来说,我想这样做的原因是我想编写一个 shell 脚本来进入单个文件系统并根据文件类型制作硬链接(hard link)和软链接(soft link),并且我希望它保留权限。
  • 最佳答案

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

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

    I discovered that the default permissions for a directory are 777



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

    关于unix - 为什么符号链接(symbolic link)的权限默认为all-permissive?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22975261/

    相关文章:

    linux - 如何在.sh文件中编写ssh连接代码以连接到远程计算机

    cygwin - 检查cygwin中符号链接(symbolic link)类型的差异

    linux - linux下如何仅通过 "R"获取进程状态?

    linux - 按数据 block 内的字符对文件进行排序

    Docker --mount type=tmpfs 具有 'exec' 权限

    sql - 如何将 Snowflake 中的 PROCEDURE_DEFINITION 访问权限从 ADMIN 角色授予另一个角色?

    Powershell 脚本在远程连接时有效,但不能作为 Azure 启动任务

    linux - 符号链接(symbolic link)如何影响加载 persistence.xml

    php - PHP 中的符号链接(symbolic link)不起作用

    c++ - 将最后 n 行从一个文件写入另一个文件