Uruchom aplikacje X jako inny użytkownik w systemie Linux

0

Odwiedzanie starego tematu uruchamiania aplikacji X jako innego użytkownika pod Linuksem , ponieważ rozwiązaniem zawsze było dla mnie „ używaniegksu ”, ale dzisiaj, kiedy go potrzebuję i wypróbowałem, nie działa.

Podążając za gksu i dlaczego miałbyś go używać , próbowałem,

gksu -u otherusername xterm

Po przejściu okna dialogowego z prośbą o hasło otrzymałem:

$ gksu -u otherusername xterm
xterm: Xt error: Can't open display: :2

To znaczy, to nie działa dla mnie. Więc,

Jak uruchamiać aplikacje X jako inny użytkownik w systemie Linux? Dzięki.

PS, to jest Ubuntu 17.04:

$ lsb_release -a 
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 17.04
Release:        17.04
Codename:       zesty
xpt
źródło
Jakiego rodzaju autoryzacji X używa Twoja dystrybucja (czytaj dalej xauth)? Musisz upoważnić „inne użycie” do korzystania z wyświetlania „pierwszego użytkownika”.
reż.
Tak, używam xauthi nie, nie wiem, jak autoryzować „inne użycie” do korzystania z wyświetlania „pierwszego użytkownika”, proszę o pomoc @dirkt, to musi być brakujący fragment odpowiedzi. Dzięki!
xpt

Odpowiedzi:

1

Ubuntu 17, prawda? Czy na pewno prowadzisz Xorg, a nie Wayland ? (tzn. czy ps auxfwwfaktycznie pokazuje program o nazwie XUruchomiony?)

Jeśli korzystasz z Waylanda - domyślnie byłbyś: dostęp do ekranu od użytkownika root nie jest dozwolony z powodu funkcji bezpieczeństwa (kaszel) (kaszel). Powiedzieli, że możesz obejść tę komendę, zanim spróbujesz uruchomić gksu:

xhost si:localuser:root

Innym sposobem jest po prostu uruchomienie systemu Ubuntu z konwencjonalnym systemem wyświetlania Xorg; myślę, że możesz to ustawić podczas logowania .

Jednak nigdy nie korzystałem z Ubuntu 17 i zdecydowanie nie jestem użytkownikiem Wayland. Jest to prawdopodobnie jeden z powodów, dla których Ubuntu 18 / LTS powróci do domyślnego używania klasycznego Xorga .

Ważna uwaga: jeśli twoja inna nazwa użytkownika nie jest rootem , bez względu na to, że używasz Waylanda lub klasycznego Xorga, musisz uruchomić następujące polecenie przed uruchomieniem programu przez gksu:

xhost si:localuser:otherusername

AKTUALIZACJA:

Powyższe rozwiązanie nie działa dla Ubuntu 17.04 Xorg po wyjęciu z pudełka:

$ xhost si:localuser:root
localuser:root being added to access control list
X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  109 (X_ChangeHosts)
  Value in failed request:  0xe
  Serial number of failed request:  7
  Current serial number in output stream:  9

To wygląda , że Ubuntu Xorg „serwer nie jest zbudowany z SECURE_RPC wsparcia, więc stara się dodać FamilyNetname (0xfe) hosta nie powiedzie.”

Więc nie ma już gotowego rozwiązania dla Ubuntu (ale pozostaje to odpowiedzią, dopóki nie będzie działającego).

xwindows
źródło
Ubuntu 17.04, nie Ubuntu 17.10 i tak, to zdecydowanie Xorg. Nigdy nie wiadomo, że xhostmożna z niego korzystać w ten sposób - znaj tylko to xhost +, co jest uważane za niebezpieczne. Dzięki za odpowiedź xwindows! Witaj na pokładzie, z moim +25, :-)
xpt
W końcu mam szansę go przetestować, ale to nie działa dla mnie . Pozwoliłem sobie zaktualizować twoją odpowiedź, aby to wyjaśnić.
xpt
0

Sprawdź swoją DISPLAYzmienną środowiskową; wygląda na to, że nowy użytkownik próbuje użyć wyświetlacza :2, który prawdopodobnie nie ma podłączonego serwera X.

Możesz wypróbować coś takiego:: export DISPLAY=localhost:0.0co powinno powiedzieć aplikacji X innego użytkownika, aby użyła serwera X bieżącego użytkownika. (Jestem prawie pewien, że to hack, ponieważ ta zmienna powinna zostać poprawnie skonfigurowana bez konieczności jej ustawiania, więcej szczegółów tutaj ).

trapez
źródło
Mój WYŚWIETLACZ jest DISPLAY=':2' , wierzcie lub nie, ale nie zamierzam wyjaśniać mojej skomplikowanej konfiguracji, więc w skrócie, export DISPLAY=localhost:0.0nie będę tego przerywał, ponieważ DISPLAY=':2'działa dobrze dla wszystkich moich własnych aplikacji X. Ale dzięki za pomoc.
xpt
-1
  1. przypisz do tego hasło otheruser. w imieniu administratora:

    passwd otheruser

  2. Jeśli program sudo jest zainstalowany, dodaj następujący wiersz /etc/sudoers, na przykład:

    user ALL = (otheruser) ALL

pozwoli to userna wykonanie dowolnych programów / poleceń w imieniu użytkownika otheruser:

`$ sudo -u otheruser xterm`

Wymagane userbędzie hasło użytkownika .

można tego dokonać bez żądania hasła, dodając NOPASSWDdyrektywę: do powyższej linii:

user ALL = (otheruser) NOPASSWD: ALL

oryginał - https://ru.stackoverflow.com/questions/473607/%D0%92%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0 % B8% D0% B5-% D0% BA% D0% BE% D0% BC% D0% B0% D0% BD% D0% B4% D1% 8B-% D0% BE% D1% 82-% D0% B4% D1% 80% D1% 83% D0% B3% D0% BE% D0% B3% D0% BE-% D0% BF% D0% BE% D0% BB% D1% 8C% D0% B7% D0% BE% D0 % B2% D0% B0% D1% 82% D0% B5% D0% BB% D1% 8F

Wiele pomaga dodatkowe flagi -club-p

Alex_Krug
źródło
2
Problemem jest autoryzacja X („nie można otworzyć wyświetlacza”), której twoja odpowiedź w ogóle nie rozwiązuje ...
reż.