GNU/Linux >> Znalost Linux >  >> Linux

Spustit grafický program na ploše jiného uživatele jako root?

Následují další otázky, o kterých si myslím, že potřebuji vědět:

  • Z jiné než X Session? (to znamená, že root není přihlášen do X)

  • Pokud by bylo na X přihlášeno více lidí, mohl bych automaticky zjistit, kdo byl na které obrazovce, a tak programově zjistit, na které obrazovce potřebuji aplikaci spustit?

  • Mohu aplikaci spustit jako uživatel? (dobře, jsem si na 99,999 % jistý, že je to ano)

  • Mohu zjistit, zda jsou uživatelé skupiny X přihlášeni do X?

Přijatá odpověď:

Chcete-li spustit grafický program na ploše uživatele, musíte zjistit dvě věci:na jakém displeji je pracovní plocha uživatele (adresa) a jaký autorizační soubor cookie použít (heslo).

Následující příkaz by měl vypsat seznam lokálních obrazovek, na kterých je uživatel přihlášen (jedna na řádek) na většině Unices:

who | awk -v user="$target_user" '$1 == user && $2 ~ "^:" {print $2}'

Najít autorizační cookie je trochu těžší. Musíte vyhledat soubor cookie uživatele, což je ~/.Xauthority ve výchozím nastavení (vše, co potřebujete, je umístění souboru cookie, nemusíte z něj soubor cookie extrahovat). To funguje na mnoha systémech, ale ne na všech; záleží na správci zobrazení a na tom, jak je nastaven, a zejména Gdm (výchozí nastavení na Ubuntu) nepoužilo výchozí umístění, když jsem se naposledy díval. Nenapadá mě přenosný způsob, jak zjistit skutečný soubor cookie X. Nejpřesnější způsob, jak to zjistit, je zjistit pid procesu X a hledat argument pro -auth volba. Dalším způsobem je najít proces běžící na tomto X serveru a uchopit jeho XAUTHORITY proměnná prostředí. Pokud máte potíže s nalezením souboru cookie, přečtěte si část Otevření okna na vzdáleném displeji X (proč „Nelze otevřít displej“)?

Jakmile budete mít obě informace, vložte vybraný displej do DISPLAY proměnná prostředí, vybraný soubor cookie autority X v XAUTHORITY proměnná prostředí a máte nastaveno. Nezáleží na tom, pod jakým uživatelem program běží; kombinovat s su pokud chcete.


Linux
  1. Jak spustit konkrétní program jako root bez výzvy k zadání hesla?

  2. „Chyba při vytváření proxy…“ Při pokusu o spuštění terminálu Gnome jako root?

  3. Jak spustit sadu programů uvnitř Tmux nebo Gnome-terminálu v rámci skriptu?

  1. Jak přepnout z uživatele root na jiného uživatele, který má prostředí Nologin?

  2. Recenze XeroLinux:Ještě další Arch-Based Distro pro začátečníky

  3. Je možné, aby skript bash shell interagoval s jiným programem příkazového řádku?

  1. Jak spustit program C++ v jiném programu C++?

  2. Jak mohu spustit program jako root pomocí správce oken?

  3. Je možné spouštět grafické aplikace jako je Firefox bez instalace desktopového prostředí?