以非root权限运行MCSM的守护进程

前言

MCSManager面板十分好用,但是其守护进程权限我们一般情况下是以root权限来进行执行的。这就有点令人担心了,万一MCSM的开发者双羽一不小心(只是万一,MCSM真的非常好用也很稳定)写出了个BUG,获取了执行权限,而进程是以root权限执行的,那就完蛋了,所以遵循最小权限原则,我们看能不能以普通用户的权限来跑MCSM管理面板。

首先我们列个表格

功能\守护进程权限root权限下非root权限
节点监控
docker镜像使用需额外配置
终端使用root权限普通用户权限

所以我们我们接下来便是操作MCSM以非root权限操作

守护进程配置

首先我们肯定要先创建一个用户,然后将mcsm的文件夹所属权给这个用户(或者只要保证该用户对mcsm的文件夹有读取,写入,执行的权限即可,然后使用该用户(下文以新用户MCSM为例子)来启动mcsm的守护进程(前提是你没设置mcsm为开机自启,但是官方的一键安装脚本会设置mcsm的守护进程),这个时候我们就要取消MCSM作为系统服务器启动,而是手动启动

守护进程docker的配置

设置完守护进程以普通用户启动,我们首先发现的就是docker容器启动不了。这种情况可以通过将mcsm面板账号添加权限操作docker的权限即可(点此查看我以前关于给普通用户操作docker的权限的博文

操作完之后我们输入以下命令看看是不是mcsm用户在docker组中了

id mcsm

然后我们可以通过mcsm新建个容器。但是我们跑容器的时候发现mcsm启动的容器中执行用户是普通用户权限,并且用户名会变为”i have no name”

用户id为1001或者是1003等等

所以我们就需要配置docker的name space,点此前往我之前的文章查看如何配置

配置完name space之后,我们发现正常启动(通过docker run命令启动的容器)使用一切正常,但是通过MCSM面板启动的容器会依然出现i have no name 的问题,现在这边暂时的解决方案(可能不是最优的,期待有大佬指点更好方案)就是手动在镜像中创建一个用户(与容器中实际执行的id一样,并且该用户能够获取最高权限或者本身就有最高权限),(这个id每个系统都有可能不一样)。配置用户的方法在此不再赘述。

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议,记得载明出处,(期待)。内容有问题?点此反馈
上一篇
下一篇