Skip to content

[Bug Report] 使用“其他系统用户”启动实例时 PTY 创建 FIFO 权限不足 #2080

@Jerry-FaGe

Description

@Jerry-FaGe

Platform

Ubuntu 24.04

Panel Version

10.12.4

Daemon Version (Optional)

4.12.2

Recurrence Probability

100%

Bug Description

问题描述

当面板以 root 安装或运行时,应用实例在高级设置中启用“使用其他系统用户”,并指定为普通 Linux 用户后,实例进程本身确实会以该普通用户身份启动,但 PTY 控制会报错:

[MCSMANAGER-PTY] Control error: create fifo error: permission denied

从现象上看,目前“使用其他系统用户”这个功能只完成了实例进程用户切换,但没有同步处理 PTY/FIFO 相关运行目录、控制目录或临时目录的权限,导致普通用户无法创建命名管道。

预期行为

启用“使用其他系统用户”后,MCSManager 至少应满足以下之一:

  1. 自动确保 PTY/FIFO 相关运行目录对目标用户可写
  2. 由面板侧统一管理 PTY/FIFO,而不是要求实例用户自己创建
  3. 在切换实例运行用户时自动调整相关目录权限
  4. 或在文档中明确说明需要额外调整哪些目录权限

实际行为

实例可以启动,但 PTY/FIFO 创建失败,导致控制台交互异常,并出现如下日志:

[MCSMANAGER-PTY] Control error: create fifo error: permission denied

复现步骤

  1. 使用 root 安装或运行 MCSManager
  2. 创建一个应用实例
  3. 在“高级设置”中将“使用其他系统用户”设置为普通 Linux 用户
  4. 启动实例
  5. 观察到日志报错:
[MCSMANAGER-PTY] Control error: create fifo error: permission denied

补充说明

这个问题看起来并不是实例本身无法启动,而是“实例进程切换用户”和“PTY/FIFO 运行时权限”之间没有形成完整闭环。

换句话说,目前像是只做了 sudo -u 用户 启动实例,但没有一并处理 PTY/FIFO 所需目录权限,因此这个功能在实际使用中容易出现权限问题。

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions