You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设置权限,让指定用户可对多用户所有的外部磁盘目录执行du命令

如何设置权限,让指定用户可对多用户所有的外部磁盘目录执行du命令

嘿,我来帮你梳理下这个问题的解决方案~先明确下你的场景:你在Telegraf容器里用monitor_usr(UID/GID均为1001)运行服务,想要执行du命令统计外部NFS挂载磁盘的目录占用情况,但磁盘上的文件和目录由多个不同用户创建管理,monitor_usr没有足够的执行权限,导致du无法准确统计对吧?

下面给你几个实用的方案,你可以根据自身安全需求和环境选择:

方案一:用POSIX ACL给指定用户批量添加遍历权限

这是比较精细的权限控制方式,无需改动全局权限。首先要确保你的NFS挂载支持ACL(NFSv3及以上版本通常服务端配置后都支持),然后给挂载根目录递归添加monitor_usr的读+执行权限:

setfacl -R -m u:monitor_usr:rx /你的NFS挂载路径

这个命令能让monitor_usr遍历所有子目录(du只需要目录的执行权限来深入遍历,文件的读权限其实不是必须的,除非你要单独统计单个文件大小)。如果想让后续新建的目录自动继承这个权限,再设置默认ACL:

setfacl -R -d -m u:monitor_usr:rx /你的NFS挂载路径

方案二:将指定用户加入共享用户组

如果那些多用户创建的文件/目录大多属于某个共同用户组,或者你可以把它们统一调整到一个共享组里,这个方案会更合适。先把monitor_usr加入目标共享组:

usermod -aG 共享组名 monitor_usr

然后递归给所有目录加上组的读+执行权限:

chmod -R g+rx /你的NFS挂载路径

这样只要文件/目录的组权限开放了rx,monitor_usr作为组成员就能正常用du统计了。

方案三:给Docker容器添加特殊Linux能力

如果不想改动磁盘上的任何权限设置,可以给Telegraf容器添加CAP_DAC_READ_SEARCH能力——这个能力能让容器内的进程绕过文件的读和执行权限检查,只要路径存在就能遍历统计。修改你的docker-compose.yml或者容器运行命令即可:

docker-compose.yml示例

services:
  telegraf:
    image: telegraf:latest
    user: monitor_usr:monitor_usr
    cap_add:
      - CAP_DAC_READ_SEARCH
    volumes:
      - /你的NFS挂载路径:/mnt/nfs

不过要注意,这个能力会让容器内的monitor_usr拥有更多权限,需要评估安全风险,内部可信环境下使用完全没问题。

备注:内容来源于stack exchange,提问作者teeeeee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 08:39:45