Unix下如何让700权限文件夹自动为新子文件夹设755、文件设644?
当然可行!用ACL默认权限轻松实现
完全可以做到你想要的权限自动继承效果——父文件夹somefolder保持700权限,里面新建的子文件夹自动设为755,文件自动设为644。核心是利用**访问控制列表(ACL)**的默认权限规则,具体操作如下:
步骤1:确认系统支持ACL
绝大多数现代Linux发行版默认已经开启ACL支持,你可以通过挂载信息验证:
mount | grep acl
如果输出包含你存放somefolder的分区(比如/dev/sda1 on / type ext4 (rw,acl,...)),说明已经开启。如果没有,临时重新挂载分区开启ACL:
mount -o remount,acl /path/to/your/partition
想要永久生效的话,编辑/etc/fstab,给对应分区的挂载选项加上acl,比如:
UUID=xxxxxx / ext4 defaults,acl 0 1
步骤2:给somefolder设置默认ACL
切换到somefolder所在路径,执行以下命令设置默认权限规则:
# 设置默认所有者权限:读写执行(目录)/读写(文件) setfacl -d -m u::rwx /path/to/somefolder # 设置默认组权限:读执行(目录)/读(文件) setfacl -d -m g::r-x /path/to/somefolder # 设置默认其他用户权限:同上组权限 setfacl -d -m o::r-x /path/to/somefolder
解释一下:
-d选项表示设置默认ACL,所有在该目录下新建的文件/子目录都会自动继承这些规则u::rwx表示所有者对新内容拥有rwx权限(对应目录的7,文件的6,因为文件默认不会赋予执行位)g::r-x和o::r-x分别给组和其他用户设置rx权限(对应目录的5,文件的4)
步骤3:验证效果
设置完成后,先检查默认ACL是否生效:
getfacl /path/to/somefolder
输出里应该能看到以default:开头的条目,比如:
default:user::rwx default:group::r-x default:other::r-x
接下来测试创建内容:
cd /path/to/somefolder mkdir subfolder1 touch file1
查看权限:
ls -ld subfolder1 # 输出应该是 drwxr-xr-x(对应755) ls -l file1 # 输出应该是 -rw-r--r--(对应644)
完美匹配你想要的结构!而且父文件夹somefolder的700权限不受影响,只有所有者能进入操作,完全符合初始需求。
内容的提问来源于stack exchange,提问作者some happyhat
相关产品推荐
相关产品推荐

