linux下的umask()函数,Linux中的umask命令图文示例

在Linux和Unix操作系统上,所有新文件都使用一组默认权限创建。 umask实用程序允许您查看或设置文件模式创建掩码,该掩码确定新创建的文件或目录的权限。

mkdir、touch、tee和其他创建新文件和目录的命令都使用它。

67752f5fe6078c6773fbe00e0335f480.png

Linux权限

在进一步讨论之前,让我们简要介绍一下Linux权限模式。

在Linux中,每个文件都与一个所有者和一个组相关联,并为三个不同类别的用户分配了访问权限:

文件所有者。

组成员。

其他用户。

有三种权限类型适用于每个类:

读取权限。

写权限。

执行权限。

此概念允许您指定允许哪些用户读取文件,写入文件或执行文件。

要查看文件权限,请使用ls命令:

linuxidc@linuxidc:~/www.linuxidc.com$ ls -l linuxidc.com.py

输出示例:

cb0c8c58579abecd44465684609b56bf.png

-rw-r--r-- 1 linuxidc linuxidc 53 Jul 15 03:18 linuxidc.com.py

|[-][-][-] [------] [---]

| | | | | |

| | | | | +-----------> 组

| | | | +-------------------> 所有者

| | | +----------------------------> 其他权限

| | +-------------------------------> 组权限

| +----------------------------------> 所有者权限

+------------------------------------> 文件类型

先详细描述第一行其中每项代表的含义:

-rw-r–r–

1) 第一个字符表示文件类型,可以是常规文件(-)、目录(d)、符号链接(l)或任何其他特殊类型的文件。接下来的9个字符代表权限,每组3个字符。第一组显示所有者权限,第二组显示组权限,最后一组显示所有其他人的权限。

2)rw-表示可读可写,代表所有者u的权限。

3)第一个r–表示可读,代表所属组g的权限(相同权限的人放在一起就是一组);第二个r–表示可读,代表其他人o的权限。

r 读 w 写 x 执行

数字2表示该文件被调用次数

第一个linuxidc表示所有者u

第二个linuxidc表示所属组g,在这里表示和root一个组的其他用户

53是文件大小,单位是字节(byte)

Jul 15 03:18表示文件最后一次修改时间

linuxidc.com.py是文件名

还有另外三种特殊的文件权限类型:setuid、setgid和Sticky Bit。

如果我们使用数字表示法表示文件权限,我们将得到数字644:

所有者: rw- = 4+2+0 = 6

组: r-- = 4+0+0 = 4

其他人: r-- = 4+0+0 = 4

以数字表示法表示时,权限可以有三个或四个八进制数字(0-7)。第一个数字表示特殊权限,如果省略则表示没有为文件设置特殊权限。

可以使用chown命令使用chmod命令和所有权更改文件权限。

了解umask

默认情况下,在Linux系统上,文件的默认创建权限是666,它为用户、组和其他用户提供读和写权限;目录的默认创建权限是777,这意味着对用户、组和其他用户具有读、写和执行权限。Linux不允许创建具有执行权限的文件。

可以使用umask实用程序修改默认的创建权限。

umask只影响当前的shell环境。在大多数Linux发行版上,默认的系统范围umask值是在pam_umask.so 或 /etc/profile 文件中设置的。

如果希望根据每个用户指定不同的值,请编辑用户的shell配置文件,例如~/.bashrc 或 ~/.zshrc。(您还可以通过运行umask后面跟着所需的值来更改当前会话umask值。

要查看当前掩码值,只需输入umask,不带任何参数:

linuxidc@linuxidc:~/www.linuxidc.com$ umask

输出示例:

0022

27e26dccf5c19f660671b9f5961c023e.png

第一个 0 表示的是特殊权限位,对 umask 来说,有效的设定值只有后三位数。

正如我们已经提到的,文件的默认创建权限是666和目录777。要计算新文件的权限,请从默认值中减去umask值。

例如,要计算unask 022将如何影响新创建的文件和目录,请使用:

文件:666  -  022 = 644。所有者可以读取和修改文件。 组和其他人只能读取文件。

目录:777  -  022 = 755。所有者可以进入目录并列出读取,修改,创建或删除目录中的文件。 组和其他人可以进入目录并列出并读取文件。

您还可以使用-S选项以符号表示法显示掩码值:

linuxidc@linuxidc:~/www.linuxidc.com$ umask -S

输出示例:

u=rwx,g=rx,o=rx

a02be35955094cb71cb3c33cf3f11d95.png

与数字表示法不同,符号表示法值包含将在新创建的文件和目录上设置的权限。

设置掩码值

可以使用八进制或符号表示法设置文件创建掩码。要使更改永久化,请在/etc/profile文件等全局配置文件中设置新的umask值,这将影响所有用户或用户的shell配置文件,如,~/.profile,~/.bashrc 或 ~/.zshrc会影响用户。用户文件优先于全局文件。

在更改umask值之前,请确保新值不会带来潜在的安全风险。应该非常谨慎地使用低于022的限制值。例如,umask 000表示任何人都对所有新创建的文件具有读,写和执行权限。

假设我们想为新创建的文件和目录设置更严格的权限,以便其他人无法cd到目录和读取文件。我们想要的权限是目录750和文件640。

要计算umask值,只需从默认值中减去所需的权限:

Umask值:777-750 = 027

以数字表示法表示的所需umask值是027。

要在系统范围内永久设置新值,请使用文本编辑器打开/etc/profile文件:

sudo nano /etc/profile

并在文件的开头更改或添加以下行:

umask 027

a5b67d4e87423fa634e51ed97b970577.png

要使更改生效,请运行以下源命令或注销并登录:

source /etc/profile

要验证新设置,我们将使用mkdir和touch创建一个新文件和目录:

mkdir linuxidc

touch linuxmi

如果使用ll命令检查权限,您将注意到新文件具有640和新目录750权限,如我们所愿:

输出示例:

drwxr-x---  2 linuxidc linuxidc 4096 Jul 23 22:48 linuxidc/

-rw-r-----  1 linuxidc linuxidc    0 Jul 23 22:49 linuxmi

d97c2cf85b3dc6fb84a4af4fdcfb27c4.png

设置文件创建掩码的另一种方法是使用符号表示法。 例如,umask u=rwx,g=rx,o=与umask 027相同。

总结

在本指南中,我们已经解释了Linux权限以及如何使用umask命令为新创建的文件或目录设置权限。

有关更多信息,请在终端中键入man umask。

如果您有任何疑问,请在下面留言。

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值