linux中umask案例方式详细说透

1.什么是umask

umask的定义:umask 是指使用者在创建文件或目录时的权限默认值
语法格式:umask: usage: umask [-p] [-S] [mode]
参数选项:

参数选项 解释说明
-p 输出格式:u=rwx,g=rx,o=rx
-S 输出格式:umask 0022

2.为什么要存在umask

当我们登录系统之后创建一个文件是会有一个默认权限的,那么这个权限是怎么来的呢?这就是umask干的事情。umask用于设置用户创建文件或者目录的默认权限,umask设置的是权限的“补码”,而我们常用chmod设置的是文件权限码。
一般在/etc/profile,HOME/.bashprofile或者HOME/.profile中设置umask值。
读完后,还是不知道umask是什么鬼~~~
那我们就慢慢来揭开他的神秘面纱。。。。。

3.如何使用umask

3.1 首先使用不同用户查看一下umask

  1. #root用户
[root@node1 /]# umask 
0022
[root@node1 /]# umask -S
u=rwx,g=rx,o=rx
  1. 普通用户,如$mysql用户
[mysql@test1 ~]$ umask
0002
[mysql@test1 ~]$ umask -S
u=rwx,g=rwx,o=rx
[mysql@test1 ~]$ 

发现没有root用户umask为0022,普通用户umask为0002,第一个0可忽略掉。

不要感到奇怪,这就对umask的默认权限说明:

  • 默认情况下:root的umask会拿掉比较多的属性,root的umask默认是022,这是基 于安全的考虑啦~至于一般身份使用者,通常他们的umask 为002,亦即保留同群组的写入 权力!其实,关于默认umask的设置可以参考/etc/bashrc这个文件的内容,不过,不建议修改该文件
  • 若使用者创建文件,则默认"没有可执行(x)权限", 即只有rw两个值,故最大为666分, 默认权限为: -rw-rw-rw-
  • 若使用者创建目录,则由于x与是否可以进入此目录有关,因此默认权限全部开放,即最大为777分,默认权限为: drwxrwxrwx
    你肯定知道,在linux中代表权限的r, w, x 分别是用4, 2, 1表示

案例1:文件a.txt创建者有rwx权限,组成员有rx权限,其他用户由x权限

#读写执行 rwx=4+2+1=7
#读执行 rx=4+1=5
#执行 x=1
chmod  751 a.txt
-rwxr-x--x. 1 mysql mysql 0 Aug 11 15:58 a.txt

但是~~~ 需要注意的是umask的分数是"该默认值需要减去的权限", 因为r, w, x 分别是4, 2, 1分, 所以, 当拿掉写的权限, 就是输入2分, 拿掉读的权限,就是输入4分,拿掉读写的权限,就是6分,拿掉执行和写入的权限, 就是3分, 拿掉5分的权限,就是读和执行的权限。


#普通用户创建一个example.txt文件
[mysql@test1 ~]$ touch example.txt

可以看到example.txt权限为rw-rw-r–

[mysql@test1 ~]$ ls -l example.txt
-rw-rw-r--. 1 mysql mysql 0 Aug 11 16:32 example.txt

同理普通用户创建一个example文件目录,可以看到目录权限为drwxrwxr-x

[mysql@test1 ~]$ mkdir example
drwxrwxr-x. 2 mysql mysql 6 Aug 11 16:36 example

用上面的例子来说明:因为普通用户umask为002,所以user没有被拿掉权限,group也没有被拿掉权限,但是others的权限被拿了2(即w这个权限),那么当使用者:
创建文件时: (-rw-rw-rw-) - (--------w-) ==> (-rw-rw-r–)
文件最高权限:666-002=664
创建目录时: (drwxrwxrwx) - (d-------w-) ==> (drwxrwxr-x)
目录最高权限:777-002=775

聪明的你一定知道了,管理员root用户也是同样的道理,只不过umask变为0022了

#root用户创建文件目录
drwxr-xr-x   2 root    root         25 Aug  5 23:51 example
#root用户创建文件
-rw-r--r-- 1 root root 0 Aug  5 23:51 examole.txt

创建文件时: (-rw-rw-rw-) - (----w—w-) ==> (-rw-r–r--)
文件最高权限:666-022=644
创建目录时: (drwxrwxrwx) - (d----w–w-) ==> (drwxr-xr-x)
目录最高权限:777-022=755

小样,到现在明白了umask是干什么了的吧!

3.2 umask的修改

就知道你会这么问,所以早就在这给你安排上了,如何修改umask的值
umask 的修改分两中:

  • 临时修改
[mysql@test1 ~]$ umask
0002
[mysql@test1 ~]$ umask 0003
[mysql@test1 ~]$ umask
0003
[mysql@test1 ~]$ 

关掉回话后umask恢复为0002

  • 永久修改

可以编辑以下文件 添加umask=023

sudo sh -c "echo umask 0023 >> /etc/profile"
#环境变量立即生效
source /etc/profile

umask永久为0023

完全可以根据当前登录用户来设置具体的umask值,下面是配置文件的有效程度

#交互式登陆的配置生效:
/etc/profile < /etc/profile.d/*.sh < ~/.bash_profile < ~/.bashrc </etc/bashrc 【/etc/bashrc的配置最有效 可以覆盖前面的配置】
#非交互登陆的配置生效:
~/.bashrc < /etc/bashrc  < /etc/profile.d/*.sh

如当前登录用户为普通用户mysql

vi ~/.bashrc
umask 003
:wq
#重新打开窗口,发现
[mysql@test1 ~]$ umask
0003

linux中umask案例方式详细说透_第1张图片
ok,到此umask是什么,如何查看,如何修改就说完了,大家加油~

你可能感兴趣的:(linux)