umask命令
在Linux
和其他类Unix
的操作系统上,将使用一组默认权限创建新文件,具体来说,可以通过应用称为umask
的权限掩码,以特定方式限制新文件的权限,umask
命令指定在建立文件时预设的权限掩码,或者展示当前的权限掩码值。
语法
umask [-S] [mask]
参数
-S
: 以文字的方式来表示权限掩码。mask
: 果指定了有效的掩码,则将umask
设置为此值,如果未指定掩码,则返回当前的umask
值。
权限
使用ll
命令查看文件与文件夹相关信息,对于其权限信息:
drwxr-xr-x 12 linuxize users 4.0K Apr 8 20:51 dirname
|[-][-][-] [------] [---]
| | | | | |
| | | | | +-----------> Group
| | | | +-------------------> Owner
| | | +----------------------------> Others Permissions
| | +-------------------------------> Group Permissions
| +----------------------------------> Owner Permissions
+------------------------------------> File Type
- 首符号为
-
代表该文件为普通文件,为d
则代表目录。 - 紧接着三个字符
rw-
代表用户u
权限属性。 - 接下来三个字符
r--
代表用户组g
权限属性。 - 最后三个字符
r--
代表其他人o
权限属性。
权限可以使用字符表示,同样也可以使用八进制表示信息:
r
: 读取属性,值为4
。w
: 写入属性,值为2
。x
: 执行属性,值为1
。
关于操作权限的操作符:
+
: 为指定的用户类增加指定的文件权限。-
:为指定的用户类去除指定的文件权限。=
: 为指定的用户类设定指定的文件权限。
工作
本质上,umask
的每个数字都从操作系统的默认值中减去,以获得定义的默认值,这不是真正的减法,从技术上讲是将掩码按位取反,然后使用逻辑AND
操作将此值应用于默认权限,例如umask
值为0022
:
- 在
Linux
系统上,默认的创建文件权限是666
,默认创建文件夹的权限为777
。 - 即文件默认权限
666 - 022 = 644
即现在创建的新文件的权限为644
。 - 创建文件夹则为
777 - 022 = 755
即现在创建的新文件夹的权限为755
。
此外,第一个零是特殊的权限数字,可以忽略,就当前的目的而言,0002
与002
相同。
示例
查看系统当前umask
值。
umask
# 0022
以符号表示形式表示当前系统权限掩码。
umask -S
# u=rwx,g=rx,o=rx # 实际上表达的是在所有者或者组以及其他人中的哪些权限已经被取消
将系统umask
值设置为022
。
umask 022
每日一题
https://github.com/WindrunnerMax/EveryDay
参考
https://www.computerhope.com/unix/uumask.htm
https://linuxize.com/post/umask-command-in-linux/
https://www.runoob.com/linux/linux-comm-umask.html