设置umask命令操作创建一个文件或目录时

umask是设置权限掩码当你创建一个文件或目录非常常用的命令,通常0022:



壳> umask



0022



注:0022等于0220022中的前0位为粘性位,本文不做讨论,有意者请自行检查。



为了演示方便以后,两个文件在Windows 7创建:



foo.zip(包括:目录foo_dir,文件foo_file)



Bar.tar(包括:目录bar_dir,文件bar_file)



当然,你不能使用Windows,我这样做,只是为了稍后再加载。



把这两个文件上传到Linux上,然后让我学习导演的声音,喊一声:动作!



操作foo.zip



壳>解压foo.zip



此时查看目录和文件的权限是:



foo_dir:755(drwxr-xr-x)



foo_file:644(rw rndash;rndash;)



这是因为该目录的基本权限是777,该文件的基本权力是666,因为umask默认是022,所以:



目录:777,022 = 755



文件:666,022 = 644



注:权限实际上是二进制位运算,指的是所有关于umask和权限。



操作bar.tar



壳>焦油XF bar.tar



这次有点不一样。我们要运行两个TAR命令。



第一次:将TAR命令作为根文件运行,然后查看目录和文件的权限,它们是:



bar_dir:777(drwxrwxrwx)



bar_file:777(- rwxrwxrwx)



第二次:在非根状态下运行TAR命令,然后分别查看目录和文件的权限:



bar_dir:755(drwxr-xr-x)



bar_file:755(- rwxr-xr-x)



注意:在运行TAR命令之前,请记住删除最后一次运行TAR命令生成的目录和文件,以免受到影响。



这两种结果之间存在一定的差异,可以在人焦油中找到有用的描述信息:



p,同样的权限,保留权限



提取所有保护信息



没有相同的权限



应用userrsquo;当提取文件的umask代替记录的权限



在使用TAR命令时,默认情况下是提取所有保护信息。无根,默认情况下是适用的userrsquo,umask,和userrsquo。



我们使用Windows在上传到Linux之前创建文件,因此文件和目录的初始权限为777。当我们用根运行tar命令,我们保留这个权限。当我们运行在非root身份tar命令,虽然应用umask,焦油是一位特殊的。它使用目录和文件本身的权限作为基准权限,而不是777(目录)和666(文件),因此最终权限变成755(777,022)。



顺便说一下,简要介绍如何轻松修改目录或文件的权限。



壳>找到 /路径式D xargs chmod 755 |



壳>找到 /路径- F型xargs chmod 644 |