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

bash如何创建仅当前运行的脚本进程可访问的文件

解答

Linux 系统的权限模型决定了 root 用户默认拥有所有文件的访问权限,无法做到完全屏蔽 root 对该文件的访问,以下方案可以实现除 root 外,仅当前运行的 bash 脚本进程可访问文件的需求,尽可能降低泄露风险。

  • 方案1:基础权限限制
    通过设置 umask 确保新创建文件的默认权限为仅所有者可读写,其余用户无任何权限,适合需要保留文件实体在磁盘的场景。

    # 设置umask为077,后续新建文件默认权限为600,新建目录默认权限为700
    umask 077
    # 创建目标文件
    touch /your/disk/path/target_file
    # 可选:二次设置权限避免环境异常导致umask不生效
    chmod 0600 /your/disk/path/target_file
    

    该方案下仅脚本运行用户和root可以访问文件,其余普通用户无任何访问权限。

  • 方案2:无入口临时文件(更安全,推荐)
    利用Linux「进程持有文件描述符时,即使文件从文件系统删除,持有进程仍可正常读写」的特性,创建临时文件后立即删除文件系统入口,同用户的其他进程也无法找到文件路径访问,仅当前脚本持有的文件描述符可操作文件。

    # 在内存文件系统/dev/shm创建随机名称临时文件,mktemp默认生成权限为600的文件
    tmp_file=$(mktemp /dev/shm/script_tmp.XXXXXX)
    # 给当前脚本打开文件描述符3,绑定到该临时文件,支持读写
    exec 3<>"$tmp_file"
    # 立即删除文件系统入口,其他进程无法通过路径搜索到该文件
    rm -f "$tmp_file"
    
    # 使用示例:往文件写入内容
    echo "your sensitive content" >&3
    # 读取文件全部内容
    cat <&3
    
    # 脚本退出前可主动关闭文件描述符,进程退出时系统也会自动回收
    exec 3>&-
    

    该方案下仅root用户可以通过/proc/<脚本进程PID>/fd/3路径访问到文件内容,其余所有普通用户(包括和脚本同运行用户的其他进程)都无法访问该文件。

注意:所有方案都无法阻止root用户访问文件,这是Linux系统设计的固有特性,root用户可绕过所有常规权限校验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:48:01