当新建一个文件或者目录时,默认权限是什么?如何查看文件的默认权限?
我们用touch和mkdir分别创建文件与目录,再用ls -l来查看文件与目录的权限。
[root@localhost~]# touch A B
[root@localhost~]# mkdir C D
[root@localhost~]# ls -l A B C D
-rw-rw-r--. 1 root root 8512 5月 7 09:16 A
-rw-rw-r--. 1 root root 91 4月 16 2019 B
drwxrwxr-x. 2 root root 1835 4月 19 2019 C
drwxrwxr-x. 2 root root 4096 12月 4 14:15 D
提问: 所以文件的默认权限是664?目录的默认权限是775?
文件的默认权限是666,目录的默认权限是777。
为什么会变成文件的默认664和775?
是因为设置了umask
[root@localhost~]# umask
0002
umask表示要从默认权限里移除哪些权限,002表示要从文件所有者、文件属组和其他人的权限中分别移除“0”,“0”,“2”对应的部分。
思考:假设umask 的值是 245(即 -w- r-- r-x ) 那么文件的实际权限是多少? 目录的实际权限又是多少?能不能用默认权限666和777直接减去245 ?
先说结果——不行!!!!
首先,根据umask命令修改默认权限 的语法格式 umask <权限数字>,我们修改默认权限为245
[root@Server tmp]# umask 245 // 设置umask的值
[root@Server tmp]# umask // 查看umask的值,结果是245
0245
[root@Server tmp]# mkdir dir2 // 新建一个目录dir2
[root@Server tmp]# touch file2 // 新建一个文件file2
[root@Server tmp]# ls -l dir2 file2
dr-x-wx-w-. 2 root root 6 1月 20 21:11 dir2 // 用数字表示即532
-r---w--w-. 1 root root 0 1月 20 21:11 file2 // 用数字表示即422
结论: 在计算文件和目录的实际权限时,不能直接用默认权限和umask对应位置的数字直接相减,而应该将其转为字母的形式再相减。 直接用数字相减对目录适用,但对文件不适用!
素材来源:《Linux系统管理及应用项目式教程(RHEL 7.4CentOS 7.4)(微课版)》