小编mvi*_*eck的帖子

SELinux 和 docker:允许访问 /tmp/.X11-unix 中的 X unix 套接字

如何允许在启用 SELinux 的情况下访问特定 docker 容器的特定 X unix 套接字?我更喜欢设置为docker run --security-opt.

在 Fedora 25 上,我发现 docker 守护进程--selinux-enabled默认运行。从主机访问共享文件--volume被拒绝。可以允许访问设置标志z。例子:--volume $HOME:$HOME:rw,z。到目前为止,这适用于常规文件。

比较原子博客:在 Docker 中使用 Volumes 会导致 SELinux 出现问题

z标志不足以允许连接到 X unix 套接字。

目前找到的解决方法:

  • 使用 docker run option 禁用特定容器的 SELinux 限制--security-opt label=disable。优点:这很简单,效果很好,而且我不需要更改主机上的 SELinux 策略。反对:针对这一容器的 SELinux 保护完全被禁用。(到目前为止,最好的解决方案)
  • 设置 docker run 选项--ipc=host。优点:简单,有效,SELinux 保持启用状态,无需更改策略。反对:禁用 IPC 命名空间,从而引发另一个安全问题并减少容器隔离。
  • 使用建议的ausearch -c 'xfce4-about' --raw | audit2allow -M my-xfce4about. 下面引用了创建的模块。亲:它有效。反对:所有容器都可以永远访问所有 X unix 套接字,我必须更改 SELinux …

fedora selinux socket volume docker

7
推荐指数
1
解决办法
2522
查看次数

从 X 内部运行第二个 X 服务器作为 systemd 服务

我想从已经运行的 X 会话中启动第二个 X 服务器。

在 debian 8 之前,我可以编辑/etc/X11/Xwrapper.config并将行更改allowed_users=consoleallowed_users=anybody. 这允许我作为非特权用户从 X 中运行 X。X 是 Xorg 的 setuid 包装器。

在 debian 9 中发生了变化,X 不再是 setuid 包装器,而是由 systemd 控制 X 所需的权限。该文件/etc/X11/Xwrapper.config不再存在。

可以使用 package 恢复旧行为xserver-xorg-legacy。然后/etc/X11/Xwrapper.config必须包含行

allowed_users=anybody
needs_root_rights=yes
Run Code Online (Sandbox Code Playgroud)

另一种可能性是切换到 tty1...tty6 之一并运行 X,xinit xterm -- :1 vt1而 vt1...vt6 必须遵守 tty1...tty6。(tty8...tty12 / vt8...vt12 不再可用。)

我想避免使用旧设置并避免切换到控制台。我想找回xinit xterm -- :1 vt8.

如何设置 systemd 以允许非特权用户从已经运行的 X 中启动第二个 X 服务器?

xorg debian x11 systemd x-server

5
推荐指数
1
解决办法
2716
查看次数

标签 统计

debian ×1

docker ×1

fedora ×1

selinux ×1

socket ×1

systemd ×1

volume ×1

x-server ×1

x11 ×1

xorg ×1