Linux 文件权限机制:默认权限与umask
发布时间:2026/9/6 4:01:11 锦皓数字建站

我们在 Linux 系统中创建新文件或目录时有没有想过它们的权限是如何确定的今天聊聊文件权限的默认值机制目录文件的起点权限666 和 777umask权限的过滤器umask 为 002 时的计算umask 可以修改吗1. 临时修改 umask2. umask 的生效范围3. 极端情况实战创建一个共享文件夹步骤一在系统目录下创建文件夹步骤二开放写权限权限计算的编程思维总结文件的起点权限666 和 777Linux 为不同类型的文件设定了不同的起始权限文件类型起始权限二进制权限含义普通文件666110 110 110所有者、所属组、其他人都能读目录文件777111 111 111所有人都能读、写、执行普通文件默认没有执行权限(x)因为可执行文件需要明确标记为可执行目录需要执行权限才能进入所以默认给满umask权限的过滤器仅仅有起始权限还不够最终权限还需要经过 umask 的过滤最终权限 起始权限 (~umask)这里的是按位与运算~是按位取反。听起来有点绕我们来看具体例子umask 为 002 时的计算假设 umask 002// 普通文件666 (~002)// 666 110 110 110// ~002 111 111 101 (取反)// 结果 110 110 100 664// 目录文件777 (~002)// 777 111 111 111// ~002 111 111 101// 结果 111 111 101 775所以在 umask 002 的默认情况下普通文件最终权限是664 rw-rw-r-- 目录文件最终权限是775 rwxrwxr-x umask 可以修改吗当然可以但有几点需要注意1. 临时修改 umask# 修改 umask 为 000新建文件就是 666 或 777umask000# 修改 umask 为 077新建文件更私有umask0772. umask 的生效范围umask 的更改是临时的仅对当前会话生效。下一次登录服务器就会恢复默认值 002这是因为 umask 通常写在/etc/profile或用户家目录的.bashrc中开机会重新加载。3. 极端情况umask 000新建的文件就是 666 或 777完全不限制权限umask 777新建的文件都是 000没有任何权限基本不可用实战创建一个共享文件夹如果多人协作开发常常需要创建一个所有人都能访问的共享目录步骤一在系统目录下创建文件夹# 需要 root 权限在 / 目录下创建sudomkdir/my_shared步骤二开放写权限# 给所有人开放写权限sudochmodow /my_shared此时所有用户都能在/my_shared目录下创建和删除文件权限计算的编程思维如果你用 C 语言实现一个简单的权限计算器#includestdio.hintmain(){intdefault_perm666;// 普通文件起始权限intumask002;intfinal_permdefault_perm(~umask);printf(起始权限: %o\n,default_perm);printf(umask: %o\n,umask);printf(最终权限: %o\n,final_perm);return0;}输出起始权限: 666 umask: 002 最终权限: 664总结普通文件起始权限是 666目录是 777最终权限 起始权限 (~umask)umask 默认是 002umask 可以临时修改但重启后会恢复创建共享目录时需要用sudo提权并设置ow免责声明本文仅用于学习交流 Linux 权限机制。不同 Linux 发行版的默认 umask 可能略有不同生产环境中请谨慎修改权限封面图来源于网络,如有侵权,请联系删除
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。