如果我想要新创建的文件具有特定的 Linux/Unix 权限,如何计算要使用的 umask 值?

问题描述 投票:0回答:1

如果我希望新创建的文件的 Linux/Unix 权限为任意值 xyz,如何计算所需的 umask 绝对值?

如果我使用 umask 的特定绝对值,我知道如何确定系统最终将获得哪些文件权限。例如,如果系统默认文件权限值为 666,并且我应用 umask 绝对值 022,我知道新创建的文件的最终权限值为 644(通过将 NOT(022) 与 666 进行 AND 计算)。

但是逆问题呢?

在我看来,确定必须使用什么 umask 绝对值来为新创建的文件获取特定权限值的唯一方法是创建一个表。一列将包含所有可能的 umask 值(所以是一个大表!),第二列将包含其相应的新文件权限值(对于任何给定的系统默认文件权限值)。

我说得对吗?

linux unix file-permissions umask
1个回答
0
投票

required_umask = ~expected_mode & ~111
(或
& 666
)应该可以工作(仅适用于文件,目录不以 0666 开头,而是以 0777 开头)

022 = ~644 & ~111 = 122 & 666 = 022

© www.soinside.com 2019 - 2024. All rights reserved.