关于umask(权限掩码)的一些知识
前言:首先,我们先介绍一下关于umask的一些基础知识,以方便更深入的了解umask
定义: umask(user-file-creation mode mask)用户文件创建权限掩码,是linux系统或类linux系统的一个命令,是有3个八进制位数组成,取值范围是0000-0777,或者可简写为000-077,第一个0是用来标识这是一个 八进制数,它决定了进程创建文件或目录时的默认权限,您可以在 shell 中直接运行 umask 命令来查看当前 shell 的 umask 值,如
umask与文件或目录的权限不同,需要经过换算才能得到文件或目录默认的预设值,umask 值是用于禁用文件或目录的默认权限, 当您创建新文件或目录时,系统会根据文件类型(文件或目录)和 umask 值来确定其默认权限。
对于文件,系统会使用 666(即 -rw-rw-rw-)作为基础权限,然后根据 umask 值禁用相应的权限。例如,如果 umask 值为 0022,则新建文件的默认权限为 666-022 =644(即 -rw-r–r–)。
对于目录,系统会使用 777(即-rwxrwxrwx )作为基础权限,然后根据 umask 值禁用相应的权限。例如,如果 umask 值为 0022,则新建目录的默认权限为777-022 =755(即 -rwxr-xr-x)。
因此,当您使用相同的 umask 值创建文件和目录时,它们的默认权限可能会不同
为什么文件和目录的系统基础权限不一样:因为目录必须有x权限,才可以进入到该目录下,而文件一般具有读写权限即可,如下图:
注意:
umask 值只能用于禁用权限,而不能用于启用特殊权限(例如 setuid、setgid 和 sticky bit)。如果您希望为新建文件或目录启用特殊权限,可以在创建文件或目录后使用 chmod 命令来修改它们的权限
修改umask的方法
临时修改,直接在命令行使用即可,这种只针对目前这个shell窗口生效,退出就失效了;
2.永久修改
对新建用户生效:vi /etc/profile 最后添加 umask 022 (umask 是小写)
对所有用户生效:vi /etc/bashrc 最后添加 umask 022 (umask 是小写)
【 使配置立即生效,使用 source +文件,如 source /etc/bashrc 】
针对某个特定用户修改,例如我要针对zhangsan这个用户修改,则切换到在 /home/zhangsan 目录下找到该用户的 shell 配置文件(例如 .bashrc 或 .bash_profile),然后在其中添加一行 umask 0022 来更改该用户的 umask 值。当该用户登录并启动新的 shell 时,系统会自动执行配置文件中的命令,从而应用新的 umask 值。
如下图:
需要注意的是,
不同的 shell 可能使用不同的配置文件
。可以查阅相关文档来确定应该在哪个文件中设置 umask 命令,例如,对于使用 bash 的用户,您可以在其主目录下的 .bashrc 或 .bash_profile 文件中添加一行 umask 0022 来永久更改该用户的 umask 值。,对于使用 zsh 的用户,您可以在其主目录下的 .zshrc 文件中设置 umask 命令
参考文章知乎-linux系统-umask详解
来源地址:https://blog.csdn.net/m0_73698480/article/details/130085858