xhost(本地)和 sudo xauthority 转发的安全性

Tho*_*ent 5 security xorg sudo x11 xhost

上下文:将 GUI 应用程序作为 linux 服务启动。我考虑过使用 GUI 前端制作一个无头守护程序,但现在涉及的代码太多了。该服务必须在用户登录时启动,它应该在用户 shell 中启动(文件权限在这里很重要)。不需要 root 交互(从 RPM 自动安装)。此外,系统(root)必须能够启动和停止此服务以执行由 cron 调用的维护任务。

到目前为止,我设法做到了,但我有关于它的安全问题:一旦用户“用户名”登录,以下内容是否会破坏某些 X 服务器的安全性?

  1. 在“/home/username”中创建的 .xinitrc,在启动 Windows 管理器之前调用 xhost

    xhost + local:username
    exec $WINDOWMANAGER
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用自定义编辑器修改“/etc/sudoers”以添加这些行

    username localhost = NOPASSWD: /etc/init.d/my-daemon
    Defaults env_keep += "DISPLAY XAUTHORITY"
    
    Run Code Online (Sandbox Code Playgroud)
  3. 服务脚本'/etc/init.d/my-daemon'

    #!/bin/bash
    DISPLAY=${DISPLAY:-:0.0}
    export DISPLAY=$DISPLAY
    gnomesu -u username -c 'my-gui-app-bin with-some-arguments'
    
    Run Code Online (Sandbox Code Playgroud)
  4. my-daemon 服务未在任何级别启动(即使在级别 5 上也未准备好显示)

    chkconfig --del my-daemon
    
    Run Code Online (Sandbox Code Playgroud)
  5. 通过“/etc/xdg/autostart/”中的 .desktop 文件和以下脚本自动启动守护进程

    #!/bin/bash
    sudo /etc/init.d/my-daemon start
    
    Run Code Online (Sandbox Code Playgroud)