文编|JavaBuild
大家好呀,我是JavaBuild,以后可以喊我鸟哥,嘿嘿!俺滴座右铭是不在沉默中爆发,就在沉默中灭亡,一起加油学习,厚积薄发!
场景介绍:
面试官:运维人员想通过monitor用户去监控我们部署在Linux服务器上的服务所生成的运行日志文件,以此来监控不同日志级别下的问题,做到问题及时监控,迅速停止,立刻解决的目的,但由于部分服务器上生成的日志文件默认权限过高,导致monitor用户无权查看,需要手工调整一下linux机器生成文件的默认权限。这时候你会怎么办?
我:啊,这。。。
面试管:知道linux下的umask命令吗?
我:啊,我。。。
当被问到这个命令的时候,我想很多面试者都是懵逼的,毕竟如此冷门的指令,平时学到了也不太会去留意,下面鸟哥就来整理一下这个命令!
Linux环境下文件权限介绍:
文件的类型:
-
d:代表目录
-
-:代表文件
-
l:代表软链接(可以认为是 window 中的快捷方式)
Linux 中权限分为以下几种:
-
r:代表权限是可读,r 也可以用数字 4 表示
-
w:代表权限是可写,w 也可以用数字 2 表示
-
x:代表权限是可执行,x 也可以用数字 1 表示
文件和目录权限的区别:
对文件和目录而言,读写执行表示不同的意义。
对于文件:
权限名称 |
可执行操作 |
---|---|
r |
可以使用 cat 查看文件的内容 |
w |
可以修改文件的内容 |
x |
可以将其运行为二进制文件 |
对于目录:
权限名称 |
可执行操作 |
---|---|
r |
可以查看目录下列表 |
w |
可以创建和删除目录下文件 |
x |
可以使用 cd 进入目录 |
需要注意的是:超级用户可以无视普通用户的权限,即使文件目录权限是 000,依旧可以访问。
在 linux 中的每个用户必须属于一个组,不能独立于组外。在 linux 中每个文件有所有者、所在组、其它组的概念。
-
所有者(u):一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者,用 ls ‐ahl 命令可以看到文件的所有者 也可以使用 chown 用户名 文件名来修改文件的所有者 。
-
文件所在组(g):当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组用 ls ‐ahl命令可以看到文件的所有组也可以使用 chgrp 组名 文件名来修改文件所在的组。
-
其它组(o):除开文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组。
Linux下的umask
umask其实是一组反码,用以确定文件或目录被创建时所拥有的初始权限,在没有做任何配置的情况下,umask的初始值为022,通过最大权限777与这个数字相减,就可以计算出初始目录和文件的权限。
目录权限:777 - 022 =755 文件权限:因为X(执行)权限是目录必须有的,否则无法进入,而文件则可以忽略X权限, 因此linux下在创建文件时默认remove x authority,故777 - 022 - 111=644
如需永久(临时修改的化,只需要执行umask XXX就行,不过重启后会失效)修改目录和文件被创建时的默认权限,可通过如下步骤:
1,服务部署的用户登录linux服务器,ll -a命令查询隐藏的.bashrc文件(修改/etc/profile亦可)
2,修改.bashrc文件,将umask 对应的值由022 改为027(无umask则新增)
常用的一些配置
umask值 目录 文件
022 755 644
027 750 640
002 775 664
006 771 660
007 770 660
当你把以上这一套摆在面试官时,我相信他会无法可说,哈哈哈!