文件默认权限:umask
文件默认权限:umask
umask 就是指定目前使用者在创建文件或目录时的权限默认值。
查阅的方式有两种:
- 直接输入 umask,就可以看到以数字形式显示的权限;
- 输入
umask -S
,S(Symbolic)就会以符号类型的方式来显示出权限
[root@study ~]# umask
0022 # 与一般权限有关的是后面三个数字!
[root@study ~]# umask -S
u=rwx,g=rx,o=rx
奇怪的是,怎么 umask 会有四组数字啊?不是只有三组吗?是没错啦。 第一组是特殊权限用的,我们先不要理他,先看后面三组。
在创建文件或文件夹时是会设置默认权限的,但是文件和目录的默认权限不一样。
- 若创建“文件”时,默认“没有可执行x权限”,只有 rw 这两项,也就是,最大为666分,默认权限:
-rw-rw-rw-
- 若创建“目录”,默认权限为: drwxrwxrwx。因为 x 与是否可以进入此目录有关,没有x目录都不能进入,那创建目录也没有意义了,因此创建目录时默认所有权限均开放,亦即为777。
注意的,umask的分数指的是该默认值需要减掉的权限。r、w、x 分别是 4、2、1 分,当要拿掉能w(写)的权限,就是输入2分;如果要拿掉能r(读)的权限,也就是4分;要拿掉r(读)与w(写)的权限,也就是6分,而要拿掉执行与写入的权限,也就是3分。
举上面的例子:umask为022,第一个是0,说明user没有被拿掉任何权限,group与others被拿掉了2(也就是没有w权限),所以当使用者:
- 创建文件时:(-rw-rw-rw-) - (-----w–w-) ==> -rw-r–r--
- 创建目录时:(drwxrwxrwx) - (d----w–w-) ==> drwxr-xr-x
[root@study ~]# umask
0022
[root@study ~]# touch test1
[root@study ~]# mkdir test2
[root@study ~]# ll -d test*
-rw-r--r--. 1 root root 0 6月 16 01:11 test1
drwxr-xr-x. 2 root root 6 6月 16 01:11 test2
注:ll
相当于ls -al
举上面的案例来看, test1的权限是644。如果umask为022(rwxr-xr-x),那新建的数据只有使用者自己具有 w 的权限,同群组的人只有 r 这个可读的权限而已,无法修改。所以,当我们需要新建文件给同群组的使用者共同编辑时,那么 umask 的群组就不能拿掉2这个 w 的权限。所以,umask 就得要是 002 的才可以,这样新建的文件才能够是 -rw-rw-r-- 的权限。
那如何设置 umask 呢?直接在 umask 后面输入002就好了。
[root@study ~]# umask 002
[root@study ~]# touch test3
[root@study ~]# mkdir test4
[root@study ~]# ll -d test[34]
# 中括号[ ]代表中间有个指定的字符,而不是任意字符的意思
-rw-rw-r--. 1 root root 0 6月 16 01:12 test3
drwxrwxr-x. 2 root root 6 6月 16 01:12 test4
注意:ll
相当于是ls -l
,不知道ls命令的可以看下这篇ls命令及常用参数详解
做3道题看看自己掌握了没
1、假设你的umask为003 ,请问该 umask情况下,创建的文件与目录权限为?
umask为003(rwxrwxr–),所以拿掉的权限为 --------wx,新建文件时默认去掉x权限,新建目录默认为rwxrwxrwx。因此创建文件和目录时,权限分别为:
- 文件: (-rw-rw-rw-) - (--------wx)= -rw-rw-r–
- 目录: (drwxrwxrwx) - (d-------wx) = drwxrwxr–
2、umask 有什么用处与优点?
umask可以拿掉一些权限,因此,适当的定义umask有助于系统的安全, 因为他可以用来创建默认的目录或文件的权限。
3、当一个使用者的 umask 分别为 033 与 044 他所创建的文件与目录的权限为何?
在umask为033时,则默认是拿掉 group 与 other 的 w、x权限,因此权限就成为
- 文件: -rw-r–r--
- 目录:drwxr–r--
而当 umask为044 时,则拿掉 r 的属性,因此就成为
- 文件:-rw–w--w-
- 目录:drwx-wx-wx
参考《鸟哥的 Linux 私房菜:基础版》.pdf。整理不易
学习永无止境