GNU/Linux >> Znalost Linux >  >> Linux

jak používat xauth ke spuštění grafické aplikace přes jiného uživatele na linuxu

Řešení 1:

Chcete-li xauth používat selektivně jako uživatel1 spusťte:

xauth list|grep `uname -n`

Tím se vytisknou položky oprávnění hexkey. Mohli byste mít také různé displeje spojené s těmito hostiteli.

Jako uživatel2 nastavte svůj displej (za předpokladu, že výchozí velikost písmen):

DISPLAY=:0; export DISPLAY

Poté spusťte:

xauth add $DISPLAY . hexkey

Všimněte si tečky za $DISPLAY a před hexadecimálním klíčem.

Když již přístup nepotřebujete, jako uživatel2 můžete spustit:

xauth remove $DISPLAY

Řešení 2:

Vložil jsem svůj .zshrc řádek s export XAUTHORITY=~/.Xauthority a teď jsem schopen spustit sudo -E xcommand . Po dlouhém googlování to pro mě byl nejjednodušší způsob.

Řešení 3:

Za prvé:Nepoužívejte xhost + , je to dost nejisté (povolení/odepření přikrývky).

Použijte raději mechanismus X-Cookie:

su user2
cp /home/user1/.Xauthority /home/user2/.Xauthority 
export DISPLAY=:0

Případně, pokud máte sux nainstalovaný, použijte to (viz odpověď ehempel).

V obou případech uživatel2 použije tajný soubor cookie v .Xauthority k autorizaci na X serveru a nikdo jiný k němu nebude mít přístup.

Poznámky:

  • V závislosti na vašich oprávněních k souboru možná budete muset zkopírovat .Xauthority jiným způsobem.
  • Místo kopírování .Xauthority , můžete také použít xauth extrahovat a zkopírovat autorizační klíč (viz odpověď Randalla). Pokud máte v .Xauthority více klíčů soubor je selektivnější; jinak je to věc vkusu.

Řešení 4:

Za předpokladu, že debian nebo ubuntu (mělo by být podobné na Red Hat / SUSE).

sudo apt-get install sux
sux user -c 'command'

Řešení 5:

Toto vyřeší problém pro všechny uživatele:

cat <<EOF > /etc/profile.d/xauth.sh
#!/sbin/bash
export XAUTHORITY=~/.Xauthority
EOF

Linux
  1. Jak používat Su Command v Linuxu

  2. Jak odstranit použití bez oprávnění root s UID 0 v Linuxu

  3. Jak zabránit uživateli v přihlášení, ale povolit su - user v Linuxu?

  1. Jak používat BusyBox na Linuxu

  2. Jak mohu použít rsync s adresou IPv6 přes SSH?

  3. Jak pomocí nohup pokračovat ve spouštění příkazu po odhlášení uživatele?

  1. Jak používám cron v Linuxu

  2. Jak používat příkaz chown ke změně vlastnictví v Linuxu

  3. Jak používat příkaz id v Linuxu:5 užitečných příkladů