乐趣区

linux中修改用户创建文件时的缺省权限——umask

一、umask 是什么?

linux 系统中,用户登录到系统中后,创建一个文件的时候,这个文件有一个默认的权限,该默认权限在 linux 中由 umask 这个命令来管理。
直接使用 umask 命令可以查看并修改当前 shell 中用户创建文件的缺省权限。即修改完后关闭该 shell 再重新开启 shell 会发现上次修改未起作用,这主要是由于还有一个系统默认的 umask 的设置,一般在 /etc/profile、$ [HOME]/.bash_profile 或 $[HOME]/.profile 中设置 umask 值。

umask 的值实际上可以参考 chmod 的时候文件权限的数字值,但是 umask 是要“拿走”相应的位而已:
(1)文件的 rwx 权限对应的数字分别是 4、2、1.
(2)如果 umask 的值是 0002,第一个 0 与特殊权限有关,暂时忽略,后边的 002,每一位的含义分别讨论当前用户 (u),当前所在的组(g),其他用户(o) 等的权限,u 的权限减去 0 为权限不变(rw-),g 的权限减去 0 为权限不变(rw-),o 的权限减去 2 为减去 w 权限(r–).

二、umask 在业务中有什么用?

通常在程序中使用 umask 命令,比如 php 中有函数 umask(0002),可以在当前程序中设置默认的创建文件的权限为 rw-rw-r–,但是该程序结束后就会直接恢复原来的 umask 的值。
实际上 umask 就是为了设置默认的创建文件的权限,使用 chmod 也能实现相同的业务功能,所以,umask 的关键词就是“默认权限”。

退出移动版