在Linux中,当一个新文件被创建时,系统默认的权限为rw-rw-rw-,对所有用户而言新文件没有执行权限,如果想要添加所有用户的执行权限可以使用"$chomd u+x,g+x,o+x filename"来实现,但如果用gcc命令将某源文件编译链接生成一个新的可执行文件,那它是有执行权限的。系统默认创建新目录也有可执行权限。

使用umask命令可以将屏蔽掉用户创建文件时不希望有的权限,实现所谓的"mask"功能,比如说,我们常用的022,相应二进制码为000 010 010 即将第5位和第8位mask掉,这时如果新建一个文件,再用ls -l命令列出来可以看到其权限为rw-r--r--,第5位和第8位的w权限被mask掉了。系统在新建文件时先赋予默认权限rw-rw-rw-,再将umask取反,然后将结果与默认权限按位相与,得到最终权限,这是umask作用的实质。

下面举几个例子:
1、umask 000
   对所有位都不屏蔽,新建文件和文件夹均为默认权限(文件夹为rwxrwxrwx,文件为rw-rw-rw-)
2、umask 777
    屏蔽所有位
3、umask u=,g=w,o=
   修改umask的值,使得u和o没有任何权限,g只有w权限,这是umask除了第五位,其他全屏蔽,应该为 111101111,即757
4、umask u=rw,og=x
   修改umask的值,使得o和g只有x权限,u有rw权限,这时umask应为001110110,即166
5、umask u=rwx,g=w,o=rwx
   修改umask的值,使得u有rwx权限,g有w权限,o有rwx权限,这是umask为000101000,即050
   

可以用命令$umask xxx(八进制数)来修改当前umask的值,但下次登录系统会重新改回022,如果想永久修改,可以在/etc/profile中将umask改成你想要的值。

Logo

更多推荐