使用Linux CLI设置文件夹及子文件夹权限并实现权限继承
Linux目录权限继承的实现方法
一、同步现有目录的权限(即时生效)
如果只是想让已存在的Folder_02立刻拥有和Folder_01完全一致的权限,直接用chmod的参考权限参数最准确:
chmod --reference=/var/tmp/Folder_01 /var/tmp/Folder_01/Folder_02
这个命令会直接复制Folder_01的权限位给Folder_02,不用手动指定权限值,避免出错。
如果Folder_01下还有更多子目录和文件需要批量同步,加上-R递归处理:
chmod -R --reference=/var/tmp/Folder_01 /var/tmp/Folder_01/*
二、设置持久权限继承(未来新建文件/目录自动继承)
如果希望后续在Folder_01里新建的文件、目录都自动继承它的权限,需要用ACL(访问控制列表)设置默认规则:
- 给
Folder_01添加默认ACL规则(对应你需要的读、写、完全控制权限):
setfacl -d -m u::rwx,g::rwx,o::rwx /var/tmp/Folder_01
-d:表示设置默认ACL,仅对后续新建的对象生效-m:修改ACL规则u::rwx,g::rwx,o::rwx:分别对应所有者、组、其他用户的权限,可根据Folder_01的实际权限调整(比如原目录是u=rwx,g=rx,o=rx,就改成u::rwx,g::rx,o::rx)
- 同步现有
Folder_02的ACL权限(让它和Folder_01一致):
setfacl --reference=/var/tmp/Folder_01 /var/tmp/Folder_01/Folder_02
为什么你之前的命令没用?
你用的chmod u=rwx,g=rwx,o=rwx ./Folder_01/*是把Folder_01下的所有子项权限强制设为777,但这只是一次性修改,而且没有实现"继承"——Linux默认没有动态权限继承的机制(即父目录权限变化时自动同步子目录),只能通过上述两种方式实现即时同步或未来新建对象自动继承。
内容的提问来源于stack exchange,提问作者Ceraxes.
相关产品推荐
相关产品推荐

