请帮我理解这行命令:
xhost +SI:localuser:lightdm
Run Code Online (Sandbox Code Playgroud)
在参考这个职位的答案,也建议,如果有一个更好的办法,为什么多数民众赞成需要。我无法从手册页中获得太多信息,因此我希望有一些更详细的答案以使其变得简单。(我应该用我的用户名替换 localuser 吗,这是否类似于添加到组中?我知道 + 用于添加但不理解 SI 或 si !)
还请提及用户如何添加到“允许建立连接的列表”中以及这意味着什么。另外,我如何检查当前列表?
在新的 Wayland 显示服务器下,多个需要 root 权限的应用程序无法运行。我实际上有一个答案(解决该问题的一种方法)。我欢迎任何更好的解决方案或批评。
此问题的许多其他答案建议将 root 添加到 xhost,这虽然解决了问题,但稍微破坏了 Wayland 安全模型。最好只在程序运行期间将 root 添加到 xhost,无论是 synaptic 还是 gparted 或任何一个。
古夫:
编辑 gufw.desktop 文件(Debian 10 中的 /usr/share/applications/gufw.desktop)并更改以下行:
Exec=gufw
到
Exec=sh -c "xhost +si:localuser:root && gufw && xhost -si:localuser:root"
突触:
受到以下帖子的启发:https://discourse.ubuntu.com/t/adding-applications-to-start-up/9288 编辑 /usr/bin/synaptic-pkexec 以注释掉 zenity 警告消息(假设是 Debian 10)并更改行:
exec "/usr/sbin/synaptic" "$@"
到
xhost +si:localuser:root
pkexec "/usr/sbin/synaptic" "$@"
xhost -si:localuser:root
Run Code Online (Sandbox Code Playgroud)
我想其他程序大多可以像 gufw 一样进行修改。这并不能解决旧程序以 root 身份运行所有内容(包括 GUI)的根本问题,但至少它们可以像以前一样运行。
上下文:将 GUI 应用程序作为 linux 服务启动。我考虑过使用 GUI 前端制作一个无头守护程序,但现在涉及的代码太多了。该服务必须在用户登录时启动,它应该在用户 shell 中启动(文件权限在这里很重要)。不需要 root 交互(从 RPM 自动安装)。此外,系统(root)必须能够启动和停止此服务以执行由 cron 调用的维护任务。
到目前为止,我设法做到了,但我有关于它的安全问题:一旦用户“用户名”登录,以下内容是否会破坏某些 X 服务器的安全性?
在“/home/username”中创建的 .xinitrc,在启动 Windows 管理器之前调用 xhost
xhost + local:username
exec $WINDOWMANAGER
Run Code Online (Sandbox Code Playgroud)使用自定义编辑器修改“/etc/sudoers”以添加这些行
username localhost = NOPASSWD: /etc/init.d/my-daemon
Defaults env_keep += "DISPLAY XAUTHORITY"
Run Code Online (Sandbox Code Playgroud)服务脚本'/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)my-daemon 服务未在任何级别启动(即使在级别 5 上也未准备好显示)
chkconfig --del my-daemon
Run Code Online (Sandbox Code Playgroud)通过“/etc/xdg/autostart/”中的 .desktop 文件和以下脚本自动启动守护进程
#!/bin/bash
sudo /etc/init.d/my-daemon start
Run Code Online (Sandbox Code Playgroud)我有带有两个用户帐户的基本台式机。我想允许第二个用户(不是启动 X 的用户)访问 xserver 并运行 GUI 程序。
我使用登录用户的 xhost 进行了此工作,但这似乎不再起作用。
xhost +SI:localuser:fred
Run Code Online (Sandbox Code Playgroud)
现在,如果我执行 su - fred 并尝试任何需要 X 的操作,我会收到一条错误消息,表明它无法访问显示器。
$ xhost
xhost: unable to open display ""
Run Code Online (Sandbox Code Playgroud)
请不要回复如何使用vnc、ssh或远程访问。这不是问题所在。
感谢您对如何做到这一点的任何帮助,它阻止了我工作。
有人能告诉我以下命令是否是永久性的吗?
xhost +local:
Run Code Online (Sandbox Code Playgroud)
还是在我关闭应用程序、会话或重新启动后重置?
或者我是否需要在执行以下命令之后才能撤消上述命令?
xhost -
Run Code Online (Sandbox Code Playgroud) 我试图在启用 X windows 端口转发后运行程序。
我在 /etc/ssh/sshd_config 中的 sshd_config 文件配置为:
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes
Run Code Online (Sandbox Code Playgroud)
我在 /etc/ssh/ssh_config 中的 ssh_config 文件有:
Host *
ForwardAgent yes
ForwardX11 yes
Run Code Online (Sandbox Code Playgroud)
我尝试启用 X Windows 端口转发
lemon:~ # ssh -X localhost
lemon:~ # echo $DISPLAY
lemon:~ # /usr/bin/SMclient
xdpyinfo: unable to open display "".
Unable to launch GUI due to X server display setting problem, Exiting .
Run Code Online (Sandbox Code Playgroud)
所以 $DISPLAY 设置为空。我已经尝试了我在网上看到的所有内容。最初没有 .Xauthority 文件,所以我从 /var/run/gdm/auth-for--/database 复制并重命名文件 .Xauthority
然后我尝试
lemon:~ # xauth generate :0 . trusted
Invalid MIT-MAGIC-COOKIE-1 keyxauth: …Run Code Online (Sandbox Code Playgroud)