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

创建0777权限命名管道后,其他用户写入提示权限拒绝

命名管道0777权限仍无法跨用户写入的解决办法

用用户A执行以下命令创建权限为0777的命名管道:

mkfifo -m 0777 /tmp/pipe

切换到用户B后执行写入操作时触发权限拒绝:

echo 1 > /tmp/pipe
bash: /tmp/pipe: Permission denied

手动执行chmod 777 /tmp/pipe也无法解决问题。

问题原因

最常见的触发因素是SELinux强制模式的限制——即便文件本身设置了777权限,SELinux的安全上下文规则仍会阻止跨用户的读写操作。此外,若/tmp目录的默认权限被修改,也可能导致该问题。

解决步骤

  1. 检查SELinux状态与管道上下文
    执行以下命令确认SELinux运行模式,以及管道的安全上下文标签:

    getenforce
    ls -lZ /tmp/pipe
    

    如果getenforce返回Enforcing,且管道的上下文不是tmp_t,则可确定是SELinux导致的权限拦截。

  2. 临时关闭SELinux验证
    执行命令临时切换到宽容模式,验证问题根源:

    setenforce 0
    

    再次尝试写入操作,若能成功则说明SELinux是问题核心。

  3. 永久修复SELinux上下文
    临时关闭仅为临时方案,需将管道的安全上下文修改为/tmp目录默认的tmp_t:

    chcon -t tmp_t /tmp/pipe
    

    若需要重启后仍保持生效,执行:

    semanage fcontext -a -t tmp_t "/tmp/pipe"
    restorecon -v /tmp/pipe
    
  4. 额外检查/tmp目录权限
    执行ls -ld /tmp,确保目录权限为drwxrwxrwt。若权限异常,执行以下命令修复:

    chmod 1777 /tmp
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 07:22:08