Linux(Ubuntu)新建文件权限继承问题
当你在一个工作目权限为777的文件下,新建一个文件的时候,就有可能发生,新建的这个文件,权限和其他文件,或者工作目录不一致的问题,我们不可能每次新建一个文件,就要
sudo chmod -R 777 /PATH所以就不得不聊一聊权限继承的问题,即我们如何让新建的文件权限与目录保持一致。
一 通过ACL设置,继承权限(部分文件)(推荐)
1. 确保Linux系统支持ACL
下载(Ubuntu)
sudo apt install acl2. 为目录设置默认ACL规则
将目标目录的权限模式(如
777)设置为默认继承规则:
-d:设置默认 ACL(对新创建的文件和目录生效)。
-m:修改 ACL 条目。
u::rwx,g::rwx,o::rwx:用户、组、其他用户均拥有rwx权限。
-R:递归应用到现有子目录(可选)。
sudo setfacl -Rdm u::rwx,g::rwx,o::rwx /PATH
3. 验证ACL规则
查看目录内的ACL配置:
getfacl /path/输出应该为:
default:user::rwx default:group::rwx default:other::rwx
 
 
4. 测试新建文件的权限
touch /path/newfile.txt
ls -l /path/newfile.txt新建文件test04.sh与03.sh的区别
 
 
二 通过umask 设置,继承权限(全局)
通过修改 umask 值,控制新创建文件的默认权限。但此方法影响整个用户会话,存在安全风险。
1. 临时修改 umask(仅当前终端有效)
在终端中设置 umask 为
000:
000:新建文件权限为666(rw-rw-rw-),目录为777(rwxrwxrwx)。
umask 000
2. 永久修改 umask(谨慎操作)
1. 编辑用户配置文件(如
~/.bashrc),添加:umask 000
2. 然后重新加载配置:
source ~/.bashrc
三 权限继承原理与注意事项
-  ACL 与 umask 的优先级-  若目录设置了默认 ACL,新文件的权限由 ACL 规则与 umask 共同决定。 
-  例如:若 umask 为 022,则文件最终权限为ACL权限 & ~umask(即666 & ~022 = 644)。
-  推荐优先使用 ACL,避免全局修改 umask。 
 
-  
-  文件与目录的权限差异-  文件默认不继承执行权限( x),需手动添加(如通过 ACL 显式设置)。
-  目录需要执行权限( x)才能进入,因此默认应保留rwx。
 
-  
-  安全性警告-  风险:开放 777权限可能导致恶意用户篡改或删除文件。
-  建议:仅在测试环境或完全信任的场景下使用,生产环境应精细化控制权限。 
 
-  
总结:
-  最佳方案:使用 setfacl设置目录的默认 ACL 规则,实现权限自动继承。
-  应急方案:临时修改 umask,但需注意安全影响。 
-  验证命令:通过 getfacl和ls -l检查权限是否符合预期。
