手册页部分 1: 用户命令

退出打印视图

更新时间: 2014 年 7 月
 
 

umask(1)

名称

umask - 获取或设置文件模式创建掩码

用法概要

/usr/bin/umask [-S] [mask]

sh

umask [ooo]

csh

umask [ooo]

ksh88

umask [-S] [mask]

ksh

umask [-S] [mask]

描述

umask 实用程序可将当前 shell 执行环境的文件模式创建掩码设置为 mask 操作数指定的值。该掩码影响后续所创建文件的文件权限位的初始值。如果 umask 的调用发生在子 shell 或单独的实用程序执行环境中,例如以下环境之一:

(umask 002) 
nohup umask ... 
find . -exec umask ...

那么它不会影响调用者环境中的文件模式创建掩码。出于这一原因,不能使用 /usr/bin/umask 更改进行中会话的 umask。其效用仅限于检查调用者的 umask。要更改进行中会话的 umask,必须使用 shell builtin 之一。

如果未指定 mask 操作数,umask 实用程序会将正在调用的进程的文件模式创建掩码写入标准输出。

sh

用户文件创建模式掩码设置为 ooo。这三个八进制数字分别是指所有者、组和其他用户的读取/写入/执行权限(请参见 chmod(1)chmod(2)umask(2))。创建文件(请参见 creat(2))时,将从系统指定的相应“数字”中减去每个指定数字的值。例如,umask 022 可以删除组和其他用户的写入权限。通常在 777 模式下创建的文件(和目录)改为采用模式 755。在 666 模式下创建的文件(和目录)改为采用模式 644

  • 如果省略了 ooo,则会输出掩码的当前值。

  • umask 由 shell 识别和执行。

  • umask 可包含在用户的 .profile(请参见 profile(4))中并在登录时调用,以自动设置用户对所创建文件或目录的权限。

csh

请参见上文有关 Bourne shell (sh)umask 内置命令的说明。

ksh88

用户文件创建掩码设置为 maskmask 可以是八进制数字或符号值,如 chmod(1) 所述。如果指定了符号值,新 umask 值是对以前的 umask 值的补数应用 mask 的结果的补数。如果省略了 mask,则会输出掩码的当前值。

ksh

umask 可将当前 shell 执行环境的文件创建掩码设置为 mask 操作数指定的值。该掩码影响后续所创建文件的文件权限位。mask 可以是八进制数字或符号值,如 chmod(1) 中所述。如果指定了符号值,新文件创建掩码是对当前的文件创建掩码的补数应用 mask 的结果的补数。如果未指定 maskumask 会将当前进程的文件创建掩码的值写入标准输出。

选项

ksh88

/usr/bin/umaskksh88 中的 umask 支持以下选项:

–S

生成符号输出。

缺省输出样式不确定,但是在同一系统上后续调用 umask 时将识别为用来恢复以前的文件模式创建掩码的 mask 操作数。

ksh

ksh 支持以下选项:

–S

导致写入文件创建掩码或将其视为符号值而非八进制数字。

操作数

支持下列操作数:

mask

一个用于指定新文件模式创建掩码的字符串。该字符串的处理方式与 chmod(1) 手册页中介绍的 mode 操作数相同。

对于 symbolic_mode 值,文件模式创建掩码的新值是 symbolic_mode 字符串指定的文件模式的文件权限位部分的逻辑补数。

symbolic_mode 值中,权限 op 字符 + 的解释与当前文件模式创建掩码相对。+ 会导致在掩码中清除所指权限对应的位。 会导致在掩码中设置所指权限对应的位。

用于指定文件模式位而非文件权限位的 mode 值的解释不确定。

文件模式创建掩码设置为所得数字值。

之前在未指定操作数的情况下在同一系统上调用 umask 的缺省输出也会识别为 mask 操作数。尽管采用这种方式得到的操作数是八进制数字,但是其用途并未过时。

输出

输出

如果未指定 mask 操作数,umask 实用程序将向标准输出写入一条消息,该消息随后可用作 umask mask 操作数。

如果指定了 –S,该消息将采用以下格式:

"u=%s,g=%s,o=%s\n", owner permissions, group permissions, \
                        other permissions

这三个值为集合 {r, w, x} 中字母的组合。存在某个字母表示在文件模式创建掩码中清除相应的位。

如果指定了 mask 操作数,则不会向标准输出写入任何内容。

示例

示例 1 使用 umask 命令

本部分列举的是 /usr/bin/umask 实用程序和 ksh88 umask builtin 的示例。

以下两个命令:

umask a=rx,ug+w
umask 002

均可设置模式掩码以使后续创建的文件清除 S_IWOTH 位。

使用以上任一命令设置模式掩码后,均可使用 umask 命令写入模式掩码的当前值:

example$ umask
0002

输出格式不确定,但是以前的实现程序采用过时的八进制整数模式格式。

example$ umask -S
u=rwx,g=rwx,o=rx

这些输出均可用作后续调用 umask 实用程序的掩码操作数。

假定按上述方式设置了模式掩码,命令:

umask g-w

可以进一步设置模式掩码以使后续创建的文件清除 S_IWGRPS_IWOTH 位。

此命令:

umask –-w

可以设置模式掩码以使后续创建的文件清除所有写入位。请注意,mask 操作数 rwx 或以连字符 () 开头的任何字符前面都必须带有 ,才能避免将其解释为一个选项。

环境变量

有关影响 umask 执行的环境变量 LANG、LC_ALL、LC_COLLATELC_CTYPE、LC_MESSAGES 和 NLSPATH 的说明,请参见 environ(5)

退出状态

将返回以下退出值:

0

文件模式创建掩码已成功更改或者未提供 mask 操作数。

>0

出现错误。

属性

有关下列属性的说明,请参见 attributes(5)

/usr/bin/umask、csh、ksh88、sh

属性类型
属性值
可用性
system/core-os
接口稳定性
Committed(已确定)
标准
请参见 standards(5)

ksh

属性类型
属性值
可用性
system/core-os
接口稳定性
Volatile(可变)

另请参见

chmod(1)csh(1)ksh(1)ksh88(1)sh(1)chmod(2)creat(2)umask(2)profile(4)attributes(5)environ(5)standards(5)