linux系统-umask详解
转自:https://blog.csdn.net/kld230/article/details/134508978
umask(user file-creatiopn mode mask)是linux中的一个命令,用于为用户文件创建权限掩码,语法“umask [-S][权限掩码]”;其中,“权限掩码”是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。
umask命令可确定要在创建的任何文件或者目录上设置的默认权限。umask命令为用户文件创建掩码,,是创建文件或文件夹时默认权限的基础。通常我们可以使用chmod修改linux中文件的权限.umask的作用与chmod的效果相反,具体看下面。
若没有文件掩码时,文件的默认权限为0666,文件夹的默认权限为0777。
原因:
创建文件一般是用来读写,所以默认情况下所有用户都具有读写权限,但是没有可执行权限,所以文件创建的默认权限为0666
而文件夹的x权限表示的是打开权限,所以这个权限必须要有,所以文件夹的默认权限为0777。
用户掩码作用
上述的权限是在没有umask情况下的默认权限。但是系统为了保护用户创建文件和文件夹的权限,此时系统会有一个默认的用户掩码(umask),大多数的Linux系统的默认掩码为022。用户掩码的作用是用户在创建文件时从文件的默认权限中去除掩码中的权限。所以文件创建之后的权限实际为:
#文件创建权限
默认权限(文件0666,文件夹0777)-umask
所以在用户不修改umask的情况下,创建文件的权限为:0666-0022=0644。创建文件夹的权限为:0777-0022=0755
可以使用umask命令直接修改掩码。
umask 0000
上述方法修改的掩码只在当前tty中生效.若要全局生效,可以讲umask值写在/etc/profile或者.bashrc中。
umask权限设置:
方法一(临时生效): # umask 022 (直接执行命令修改权限,只能临时生效,重启系统还原)
查看umask 命令为: #umask
方法二(永久生效):
对新建用户生效:vi /etc/profile 最后添加 umask 022 (umask 是小写)
对所有用户生效:vi /etc/bashrc 最后添加 umask 022 (umask 是小写)
【 使配置立即生效,使用 source +文件,如 source /etc/bashrc 】
【umask命令只能临时修改umask值,系统重启之后umask将还原成默认值。如果要永久修改umask值,需要修改/etc/profile文件或是修改/etc/bashrc文件,例如要将默认umask值设置为027,那么可以在文件中增加一行“umask 027”。
/etc/profile和/etc/bashrc都可以用于设置用户登录系统时自动执行某些操作,他们的区别是/etc/profile只在用户第一次登录时被执行,而/etc/bashrc则在用户每次登录加载Bash Shell时都会被执行。
风险:会修改新建文件的默认权限,如果该服务器是WEB应用,则此项谨慎修改。
Linux文件权限一共10位长度,linux文件权限,包含了四段,主要如下:
第一段1位:表示文件类型
第二段3位:表示所有者权限 (xxx)分别表示 读(4) 写(2) 执行(1)
第三段3位:表示所在组权限 (xxx)分别表示 读(4) 写(2) 执行(1)
第四段3位:表示其他用户权限 (xxx)分别表示 读(4) 写(2) 执行(1)
四段权限从左至右分别为文件类型,所有者的权限,所有者所在组的权限,其他用户的权限。每个Linux文件具有四种访问权限:可读®、可写(w)、可执行(x)和无权限(-)。利用ls -l命令可以看到某个文件或目录的权限,它以显示数据的第一个字段为准。第一个字段由10个字符组成。
其中文件类型部分
-为:表示文件
d为:表示文件夹
l为:表示链接文件,可以理解为 windows中的快捷方式(link file)
b为:表示里面可以供存储周边设备
c为:表示里面为一次性读取装置