Umask 在 open() 系统调用中?

问题描述

在阅读有关开放系统调用以及我们发送的参数的更多详细信息时,我阅读了:

umask 作为一组 应用程序无法对文件设置的权限。这是文件模式 进程的创建掩码,不能为目录本身设置。 大多数应用程序不会创建具有执行权限集的文件, 因此它们的认值为 666,然后由 面具。由于您已设置 umask 以删除读/写位 所有者和其他人的读取位,认值,例如 777 in 应用程序将导致文件权限为 133。这 意味着您(和其他人)可以执行该文件,而其他人 将能够写入它。如果你想让文件不被 由除所有者以外的任何人读/写/执行,您应该使用 umask 像 077 关闭群组和其他人的这些权限。在 相比之下,000 的 umask 将使新创建的目录可读, 每个人都可以写和后代(权限为 777)。 这样的 umask 是非常不安全的,你永远不应该设置 umask 到 000。Ubuntu 上的认 umask 是 022,这意味着新 每个人都可以读取创建的文件,但只能由 所有者。

有人可以解释一下这个面具是什么吗?我以前从没听说过?

解决方法

umask 值决定了文件在创建时的权限,文件的默认权限,创建后可以用 chmod 修改。

如果你想检查值设置,你必须执行命令“umask”,这可以告诉你用户必须创建文件的默认值。

如果要更改 umask 值,可以运行以下命令进行设置。

umask 022

请记住,您在上述命令中描述的数字是不会授予文件的权限,因此,在这种情况下,将生成 755。