在linux系统中,创建一个新的文件或者目录的时候,这些新的文件或目录都会有默认的访问权限,umask命令与文件和目录的默认访问权限有关。若用户创建一个文件,则文件的默认访问权限为 -rw-rw-rw-
,创建目录的默认权限 drwxrwxrwx
,而umask值则表明了需要从默认权限中去掉哪些权限来成为最终的默认权限值。
系统管理员必须要为用户设置一个合理的umask值,以确保用户创建的文件具有所希望的缺省权限,防止其他非同组用户对文件具有写权限。在已经登录之后,可以按照个人的偏好使用umask命令来改变文件创建的缺省权限。相应的改变直到退出该shell或使用另外的umask命令之前一直有效。一般来说,umask命令是在/etc /profile
文件中设置的,每个用户在登录时都会引用这个文件,所以如果希望改变所有用户的umask,可以在该文件中加入相应的条目。如果希望永久 性地设置自己的umask值,那么就把它放在自己$HOME
目录下的.profile
或.bash_profile
文件中。
umask
002
可以看到umask值为0002,其中第一个0与特殊权限有关,可以暂时不用理会,后三位002则与普通权限(rwx)有关,其中002中第一个0与用户(user)权限有关,表示从用户权限减0,也就是权限不变,所以文件的创建者的权限是默认权限(rw),第二个0与组权限(group)有关,表示从组的权限减0,所以群组的权限也保持默认权限(rw),最后一位2则与系统中其他用户(others)的权限有关,由于w=2,所以需要从其他用户默认权限(rw)减去2,则其他人的权限为rw - w = r,则创建文件的最终默认权限为-rw-rw-r--
。
同理,目录的默认权限为 drwxrwxrwx ,则d rwx rwx rwx - 002 = (d rwx rwx rwx) - (- --- --- -w-) = d rwx rwx r-x,所以用户创建目录的默认访问权限为 drwxrwxr-x 。
umask 命令允许设定文件创建时的缺省模式,对应每一类用户(文件所属用户、同组用户、其他用户)存在一个相应的umask值中的数字。对于文件来说,这一数字的最大值分别是6。系统不允许你在创建一个文本文件时就赋予它执行权限,必须在创建后用chmod命令增加这一权限,例如:创建sh脚本,需要为其增加执行权限。目录则允许设置执行权限,这样针对目录来 说,umask中各个数字最大可以到7。
Umask命令的一般形式为:
umask nnn
其中nnn为umask置000-777。
可以有几种计算umask值的方法,通过设置umask值,可以为新创建的文件和目录设置缺省权限。下表列出了与权限位相对应的umask值。
umask值 | 文件 | 目录 |
---|---|---|
0 | 6 | 7 |
1 | 6 | 6 |
2 | 4 | 5 |
3 | 4 | 4 |
4 | 2 | 3 |
5 | 2 | 2 |
6 | 0 | 1 |
7 | 0 | 0 |
计算方式一:针对各类用户分别在这张表中按照所需要的文件/目录创建缺省权限查找对应的umask值。
例如,umask值002 所对应的文件和目录创建缺省权限分别为664和775。
**计算方式二:**只要记住umask是从权限中“拿走”相应的位即可
例如,对于umask值002,相应的文件和目录缺省创建权限是什么呢:
1) 文件的最大权限 rwx rwx rwx (777)
2) umask值为002 --- --- -w-
3) 目录权限 rwx rwx r-x (775) 这就是目录创建缺省权限
4) 文件权限 rw- rw- r-- (664) 这就是文件创建缺省权限
下表列出了一些umask值及它们所对应的目录和文件权限。
umask值 | 文件 | 目录 |
---|---|---|
022 | 644 | 755 |
027 | 640 | 750 |
002 | 664 | 775 |
006 | 660 | 771 |
007 | 660 | 770 |
**PS:**在使用umask命令之前一定要弄清楚到底希望具有什么样的文件/目录创建缺省权限。
内容来源于网络,如有侵权,请联系作者删除!