You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Linux中保持新文件权限:让tom可读写指定目录日志文件求助

解决Tom对目标目录现有及未来文件的权限需求

你已经搞定了现有文件的权限配置,但新创建文件的组权限问题卡壳了对吧?核心问题是**用户owner的默认权限掩码(umask)**导致新文件缺失组写权限,结合目录的默认ACL设置,就能完美满足你的需求。

最优方案:使用默认ACL(推荐)

这个方法仅针对/one/two/three/for/目录生效,不会影响owner用户在其他目录创建文件的默认权限,是最精准的解决方案。

步骤1:确认系统支持ACL

大部分现代Linux发行版默认已开启ACL支持,你可以通过以下命令验证:

mount | grep acl

如果输出包含目标分区的acl字样,说明已支持;若没有,可能需要重新挂载分区(例如mount -o remount,acl /,具体分区请根据实际情况调整)。

步骤2:设置目录的默认ACL

执行以下命令,给owner组添加该目录下新创建文件的默认读写权限:

setfacl -d -m g:owner:rw /one/two/three/for/
  • -d:表示设置默认ACL,作用于未来在该目录下创建的文件/子目录
  • -m:表示修改ACL规则
  • g:owner:rw:给owner组分配读(r)和写(w)权限

步骤3:验证效果

让owner用户在该目录下创建一个测试文件:

touch /one/two/three/for/test_new_file

查看文件权限:

ls -l /one/two/three/for/test_new_file

你会看到权限变为-rw-rw-r--,此时tom作为owner组的成员,就能正常读写这个新文件了。

备选方案:调整owner用户的umask

如果owner用户所有创建的文件都需要组写权限,可以修改他的umask值:

临时生效(仅当前会话)

执行命令:

umask 002

默认umask是022,会去掉组的写权限;设置为002后,新创建的文件默认权限为664,目录为775

永久生效

根据owner使用的shell,修改对应的配置文件:

  • Bash:编辑~/.bashrc~/.profile,添加一行umask 002
  • Zsh:编辑~/.zshrc,添加一行umask 002
    修改后重新登录shell,设置就会永久生效。

补充说明:删除权限的确认

你已经将目录权限设置为drwxrwxr-x,tom作为owner组的成员拥有目录的写权限——这意味着他已经具备删除该目录下任何文件的权限(删除文件的权限由所在目录的权限决定,而非文件本身),这部分无需额外设置。


内容的提问来源于stack exchange,提问作者intore

火山引擎 最新活动