以非root用户身份在另一个X-session中启动应用程序


4

如何使用非root应用程序会话以root身份启动X服务器?

应该是这样的

xinit 'su -c openbox user' -- :1

但工作:)

Answers:


3

尝试

su -c 'startx openbox -- :1' user

编辑:也尝试运行

X :1 &
su -c 'DISPLAY=:1 openbox &' user

如果允许'startx'作为非特权用户启动,则可能。否则,它给出“X:用户未被授权运行X服务器,中止”。
kolypto 2011年

@o_O:我的系统(Arch Linux)似乎有/usr/bin/Xorgsetuid-root。
grawity 2011年

2

似乎唯一的方法是创建临时.xinitrc文件。这是脚本:

#!/usr/bin/env bash

username="$USER"
let xdisplay=${DISPLAY:1}+1

# Temporary xinitrc
temp_xinit="$(tempfile -p '.xinit' -s 'rc')" || exit
trap "rm -f -- '$temp_xinit'" EXIT

# Launch X
echo "sudo -u $username $@" > "$temp_xinit"
sudo xinit "$temp_xinit" -- :$xdisplay

用法示例:

$ Xnew.sh /usr/local/games/braid [..options...]

2
最好使用coreutils的mktemp一部分而不是。tempfile
2011年

@kolypto当我使用它时我想运行的应用程序(例如/ usr / local / games / braid)确实以用户身份运行,但X服务器本身以root身份运行。您是否找到了以用户身份运行的方法(最重要的是XServer)?谢谢
NoamG
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.