问题描述:shell脚本每月自动生成的文件权限有变化,导致对端系统前来提取文件时失败。
问题处理:确认为文件权限异常导致的问题,手工修改为644后对端取数正常。
具体原因:使用umask来查看默认值为0077
前段时间修改了umask值忘记了,所以最近出现新生成文件的权限问题
mask在英语中是面具、屏蔽的意思,umask在这是屏蔽码,它与chmod的效果刚好相反。
chmod设置的是文件权限码,例如:chmod 644 aaa.txt
umask设置的是权限“补码”,也可以称之为“反码”
通常配置在/etc/bashrc、/etc/profile中
查看本机的umask配置为077
众所周知,文件/目录权限分为:文件属主、属组、其他用户。系统不允许新创建的文件默认有执行权限,需要在创建后使用chmod进行设置。所以文件的最大权限为6,而目录允许默认有执行权限,所以目录的最大权限为7。
本机的umask为077,所以默认的文件全新为600,想要该接口文件被正常读取必须为644,所以对应的umask值应该为022
本机执行umask 022即可,但是只能并不能永久生效,想要永久生效还是要修改etc/bashrc、/etc/profile
因涉及安全检查不能直接修改umask
在shell脚本中添加umask 022也可达到新生成的就扣文件权限为644的效果。