systemd 内部的 screen 需要 /run/screen 上的 777 权限,但外部需要 775 的权限

systemd 内部的 screen 需要 /run/screen 上的 777 权限,但外部需要 775 的权限

我正在尝试运行一个应用程序系统里面的服务屏幕容器。

尝试启动服务时失败并显示错误消息:

screen[11648]: Directory '/run/screen' must have mode 777.

它看起来像是一个简单的错误,但有一个简单的解决方案。当我相应地更改权限时,/run/screen服务启动没有问题。

但现在,当我尝试附加屏幕会话(或screen以普通用户或 root 身份以任何方式运行)时,我收到错误消息。

Directory '/run/screen' must have mode 775.

更改权限显然让我再次遇到第一个错误,从那里我可以整天在屏幕上玩猫捉老鼠的游戏。

Screen version 4.05.00 (GNU) 10-Dec-16

操作系统是Debian 9(服务器)。

这是一个错误还是我做错了什么?无论如何,我该如何让它发挥作用?

答案1

我在 Debian 9 上的 systemd 下尝试设置我的世界服务器时遇到了同样的问题。据我所知,没有修复,但这里有一个部分解决方法。我将这些行添加到单元配置文件中:

PermissionsStartOnly=true
ExecStartPre=/bin/chmod 777 /run/screen

因此,这将根据服务启动所需的权限调整权限。每当我需要自己使用屏幕时,我都可以将权限设置回 775。

答案2

更改NoNewPrivileges=trueNoNewPrivileges=false(如果该部分中不存在则添加该行[Service])。这将允许 screen 像通常一样以 setgid 模式运行,因此它不会请求 777 权限。

相关内容