在使用 CentOS 或其他 Linux 系统时,你是否曾好奇:为什么新建的文件默认不能执行?为什么新创建的目录权限总是 755?这一切都和一个叫
umask的命令有关。本文将带你从零开始,彻底搞懂 CentOS umask命令,学会如何自定义新文件和目录的默认权限。
什么是 umask?
umask(User File Creation Mask,用户文件创建掩码)是 Linux 系统中用于控制新创建文件和目录默认权限的一个机制。它通过“屏蔽”某些权限位,来决定最终文件或目录的权限。
简单来说:
- 普通文件的“最大”权限是
666(即 rw-rw-rw-)
- 目录的“最大”权限是
777(即 rwxrwxrwx)
然后系统会用这个最大权限减去
umask值,得到实际的默认权限。
umask 的工作原理
假设当前
umask值为
0022: 新建文件权限 = 666 - 022 = 644 →
rw-r--r--新建目录权限 = 777 - 022 = 755 →
rwxr-xr-x
注意:这里不是简单的十进制减法,而是按八进制位进行“屏蔽”操作。更准确的理解方式是:umask 中为 1 的位,表示该权限被“关闭”。
查看当前 umask 值
在终端中直接输入以下命令:
$ umask0022
你也可以用
-S参数以符号形式查看:
$ umask -Su=rwx,g=rx,o=rx
临时修改 umask
你可以直接在终端中运行
umask加上新的值,例如设置为
0002:
$ umask 0002
此时再创建文件和目录:
$ touch testfile$ mkdir testdir$ ls -ld testfile testdir-rw-rw-r-- 1 user group 0 Jun 10 10:00 testfiledrwxrwxr-x 2 user group 6 Jun 10 10:00 testdir
可以看到,同组用户现在拥有写权限了!但请注意:这种修改只在当前 shell 会话中有效,关闭终端后就会失效。
永久设置 umask(系统级或用户级)
要让 umask 设置永久生效,需要修改配置文件。
1. 全局设置(对所有用户生效)
编辑
/etc/profile或
/etc/bashrc(CentOS 通常推荐后者):
# 使用 root 权限编辑sudo vi /etc/bashrc# 在文件末尾添加一行umask 002
2. 用户级设置(仅对特定用户生效)
编辑该用户的家目录下的
.bashrc或
.bash_profile:
vi ~/.bashrc# 添加umask 007
保存后,重新登录或运行
source ~/.bashrc使配置生效。
常见 umask 值及其含义
注意事项
umask 不会影响已存在的文件权限,只对新创建的文件/目录生效。 普通文件永远不会获得执行权限(x),即使计算结果包含 x。这是出于安全考虑。 在编写脚本时,若需确保特定权限,建议显式使用chmod,而不是依赖 umask。
总结
通过本教程,你应该已经掌握了 CentOS umask命令 的基本原理和使用方法。无论是临时调整还是永久配置,你都可以根据实际需求(如 Linux默认权限设置、团队协作或安全加固)灵活运用 umask。
记住:文件权限管理 是 Linux 系统安全的重要一环,而 umask 正是你掌控默认权限的第一道防线。希望这篇 umask教程 能帮助你更好地管理你的 CentOS 系统!
© 2024 Linux 权限管理指南 | 适用于 CentOS 7/8/Stream
