前言:

    当我们登录系统之后创建一个文件总是有一个默认权限的,那么这个权限是怎么来的呢?这就是umask干的事情。umask设置了用户创建文件的默认 权限,它与chmod的效果刚好相反,umask设置的是权限“补码”,而chmod设置的是文件权限码。一般可在/etc/profile、/etc/bashrc、$ [HOME]/.bash_profile、$[HOME]/.profile或$[HOME]/.bashrc中设置umask值。具体取决于Linux发行版,比如Fedora19下要更改自己的umask值,在$[HOME]/.profile或$[HOME]/.bash_profile下的增加umask的值覆盖不了/etc/profile中的配置值的,必须在$[HOME]/.bashrc下增加umask值才可以永久定义自己的umask值。

 

语法:

umask: usage: umask [-p] [-S] [mode]

-p:打印当前umask值

-S:显示当前掩码

mode:设置为umask值

 

说明:

系统管理员必须要为你设置一个合理的 umask值,以确保你创建的文件具有所希望的缺省权限,防止其他非同组用户对你的文件具有写权限。

在已经登录之后,可以按照个人的偏好使用umask命 令来改变文件创建的缺省权限。相应的改变直到退出该shell或使用另外的umask命令之前一直有效。

一般来说,umask命令是在/etc /profile文件中设置的,每个用户在登录时都会引用这个文件,所以如果希望改变所有用户的umask,可以在该文件中加入相应的条目。如果希望永久 性地设置自己的umask值,那么就把它放在自己$HOME目录下的.profile或.bash_profile或.bashrc文件中。

umask 命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、其他用户)存在一个相应的umask值中的数字。对于文件来说,这一数字的最 大值分别是6。系统不允许你在创建一个文本文件时就赋予它执行权限,必须在创建后用chmod命令增加这一权限。目录则允许设置执行权限,这样针对目录来 说,umask中各个数字最大可以到7。

例如在当前目录中创建一个file:

-rw-rw-r-- 1 shift shift 0 12月 28 16:58 test_file

进入test 目录,运行umask:

~/test$ umask 
0002

得到一个4位字符串0002

其中第一个0与特殊权限有关,可以暂时不用理会,后三位002则与普通权限(rwx)有关,其中002中第一个0与用户(user)权限有关,表示从用户权限减0,也就是权限不变,所以文件的创建者的权限是默认权限(rw),第二个0与组权限(group)有关,表示从组的权限减0,所以群组的权限也保持默认权限(rw),最后一位2则与系统中其他用户(others)的权限有关,由于w=2,所以需要从其他用户默认权限(rw)减去2,也就是去掉写(w)权限,则其他人的权限为rw - w = r。

运行umask -p:

~/test$ umask -p
umask 0002

同样的0002,不过在前面多了命令名。

运行umask -S:

~/test$ umask -S
u=rwx,g=rwx,o=rx

显然O 用户缺省w 权限,即默认创建文件或文件夹时,缺省O中的w 权限。只不过创建文件时,默认都不会给x的权限,而创建文件夹时是默认给x权限。

 

如果这个时候修改umask 值:

~/test$ umask 022

然后在创建文件和文件夹的时候:

drwxr-xr-x 2 shift shift 4096 12月 28 17:08 test2
-rw-r--r-- 1 shift shift 0 12月 28 17:07 test_file2

g 中缺省2,也就是缺省w权限。

 

与chmod 一样都是设定权限,只不过,chmod是直接设置权限是r、w或x,而umask是缺省权限,即不让设r、w 或x

 

 

 

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐