由於原來發布的有些錯誤,下面的錯誤理解為顯著標明,
umask是什么?
当我们登录系统之后创建一个文件总是有一个默认权限的,那么这个权限是怎么来的呢?这就是umask干的事 情。umask设置了用户创建文件的默认权限,它与chmod的效果刚好相反,umask设置的是权限“补码”,而chmod设置的是文件权限码。一般在 /etc/profile、$ [HOME]/.bash_profile或$[HOME]/.profile中设置umask值。
如何计算umask值?
umask命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、其他用户)存在一个相应 的umask值中的数字。对于文件来说,这一数字的最大值分别是6。系统不允许你在创建一个文本文件时就赋予它执行权限,必须在创建后用chmod命令增 加这一权限。目录则允许设置执行权限,这样针对目录来说,umask中各个数字最大可以到7。
創建的文件或者是目錄的權限就是(最大值- umask) 可以簡單的認為 對於文件來說:最大值為666 對於目錄來說:最大值為777
上面不應該是最大值減去umask, 以umask=025為例,
按照上面的說法創建出來的文件應該是641才對, 但是實際創建出來的文件權限是642,這是為什麼呢?
umask應該這樣算才對,首先我們需要明白文件的最大權限是666,即文件在都沒有執行權限 , 那我們就要看看為什麼權限會是642而不是641,
umask 025 = 000 010 101
取反後 ~ 111 101 010 = 752
把所有的執行權限去掉成為110 100 010 = 642
所以結果是這樣出來的。
同理,如果是025的創建出來的目錄的權限應該是752才對,因為執行權限的那一位不用去掉