创建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目录的默认权限被修改,也可能导致该问题。
解决步骤
检查SELinux状态与管道上下文
执行以下命令确认SELinux运行模式,以及管道的安全上下文标签:getenforce ls -lZ /tmp/pipe如果
getenforce返回Enforcing,且管道的上下文不是tmp_t,则可确定是SELinux导致的权限拦截。临时关闭SELinux验证
执行命令临时切换到宽容模式,验证问题根源:setenforce 0再次尝试写入操作,若能成功则说明SELinux是问题核心。
永久修复SELinux上下文
临时关闭仅为临时方案,需将管道的安全上下文修改为/tmp目录默认的tmp_t:chcon -t tmp_t /tmp/pipe若需要重启后仍保持生效,执行:
semanage fcontext -a -t tmp_t "/tmp/pipe" restorecon -v /tmp/pipe额外检查/tmp目录权限
执行ls -ld /tmp,确保目录权限为drwxrwxrwt。若权限异常,执行以下命令修复:chmod 1777 /tmp
内容的提问来源于stack exchange,提问作者Fenex330
相关产品推荐
相关产品推荐

