1.Umask
http://man.linuxde.net/umask
umask命令用来设置限制新建文件权限的掩码。当新文件被创建时,其最初的权限由文件创建掩码决定。用户每次注册进入系统时,umask命令都被执行, 并自动设置掩码mode来限制新文件的权限。用户可以通过再次执行umask命令来改变默认值,新的权限将会把旧的覆盖掉。
umask u=, g=w, o=rwx(不能直接利用umask命令创建一个可执行的文件,用户只能在其后利用chmod命令使它具有执行权限。虽然在命令行中,没有删去文件主和组用户的执行权限,但默认的文件权限还是640(即 rw-r-----))
执行该命令以后,对于下面创建的新文件,其文件主的权限未做任何改变,而组用户没有写权限,其他用户的所有权限都被取消。
应注意:操作符“=”在umask命令和chmod命令中的作用恰恰相反。在chmod命令中,利用它来设置指定的权限,而其余权限则被删除;但是在umask命令中,它将在原有权限的基础上删除指定的权限。
2. 那什么是umask呢? https://blog.csdn.net/hxllhhy/article/details/72972517
umask就是配合最大权限计算出默认权限的东西。
直接输入umask可以查询操作系统的umask值,默认是0022.
创建文件默认最大权限为666 (-rw-rw-rw-),默认创建的文件没有可执行权限x位。
创建目录默认最大权限为777(-rwxrwxrwx),默认创建的目录有x权限,允许用户进入。
例子1: 主要看后三位022,w对应的是2,这就意味着文件的默认权限就是- rw- r- -r- - (644)。可见就是文件的最大权限里面去掉w权限,因为所有者user对应的数字是0,所以user权限不变。
同理,目录的默认权限也是最大权限去掉022,也就是drwx r-x r-x (755) 。
例子2: 设置umask为0005的情况:
由umask的含义知拿掉5(666拿掉005),即拿掉了others的r权限(4)和x权限(1),但是默认创建的文件没有可执行权限x位,这时候就忽略x。所以创建的0005file文件中others的权限即为-w-,也就是2了。
不能是 666-005=661 这么计算。
3. Linux下的etc/profile和etc/bashrc中都有默认的umask设置,我们来看一下:
https://www.cnblogs.com/MrListening/p/5821296.html
#umask
#umask -S
4. http://blog.51cto.com/371138/1669315
交互式登录:读取次序:(越靠后优先级越高)
/etc/profile --> /etc/profile.d/* --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc
非交互式shell :当一个脚本系统能开机自动运行的shell 运行次序
~/.bashrc --> /etc/bashrc --> /etc/profile.d/*