Ustawienie xhost podczas rozruchu

8

Jestem w stanie ustawić xhost podczas rozruchu w Fedorze, edytując /etc/gdm/Init/Defaulti na przykład dodając:

/usr/bin/xhost +local:

Jak można zrobić podobnie w Ubuntu? Chcę tego

/usr/bin/xhost +local:

polecenie jest wykonywane, gdy system siedzi po znaku zachęty do zalogowania.

Yurtesen
źródło

Odpowiedzi:

11

xhostKomenda potrzebuje serwera Active X, aby uruchomić, można go uruchomić na ekranie logowania, na przykład podczas lightdmobciążenia. Możesz go włączyć, edytując /etc/lightdm/lightdm.confi dodając wiersz:

display-setup-script=/home/user/bin/xhost.sh

przykładowy /etc/lightdm/lightdm.confplik:

[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
display-setup-script=/home/user/bin/xhost.sh

przykładowy /home/user/bin/xhost.shplik:

#!/bin/bash
xhost +

Działa na Ubuntu 12.04.1 LTS i było potrzebne, aby włączyć aplikację Java, która potrzebowała X i była obsługiwana przez Tomcat 6.

George Litos
źródło
1
może być konieczne wykonanie skryptu xhost.sh za pomocą: chmod + x /home/user/bin/xhost.sh
George Litos
Działa w Xubuntu 18.04, ale upewnij się, że skrypt jest wykonywalny, jak wspomniano w @George Litos, inaczej twój system nie uruchomi się.
José Tomás Tocino
2

To działało dla mnie:

Edytuj ~/.xinitrc:

export DISPLAY=":0.0"
xhost +
openbox

Uwaga: w mojej konkretnej konfiguracji korzystam tylko z openbox . Zwykle ten plik jest pusty lub brakuje go w Ubuntu. Domyślam się, że możesz usunąć wiersz „openbox” i zadziałałoby, ale nie mam teraz sposobu, aby go przetestować. Jeśli to nie działa, zastąp ostatni wiersz polecenia polecenia menedżera okien.

lepe
źródło
1

~/.xinitrcnie działało dla mnie na Ubuntu 14.04, ale następujące działały ~/.profile. Przy każdym logowaniu, GUI / terminalu / SSH / etc ... skrypt będzie działał, więc przekierowuję, stdoutaby wyciszyć dane wyjściowe.

xhost +local: > /dev/null

Lucas
źródło
1

Miałem ten sam problem z Ubuntu 17.10. Możliwe, że mój system nie został poprawnie skonfigurowany. W każdym razie w moim przypadku dodałem

xhost + SI:localuser:root > /dev/null

na dole mojego ~/.bashrcpliku i zadziałało. Nie wiem, czy to zagrożenie bezpieczeństwa. Podzielam to, że w przypadku, gdy ktoś jest w tej samej sytuacji i ufam, że dodanie roota do listy użytkowników X-serwera powinno być OK.

Sugeruje się tutaj http://ubuntuhandbook.org/index.php/2017/10/ubuntu-17-10-tip-graphical-apps-doesnt-launch-via-root-sudo-gksu/

Możesz go najpierw przetestować bezpośrednio na terminalu:

$ xhost + SI:localuser:root
$ xhost -

Drugi wiersz zapewnia, że ​​tylko osoby z listy mają dostęp do serwera X. Następnie spróbuj „Edytuj jako administrator”, po kliknięciu pliku prawym przyciskiem myszy lub bezpośrednio uruchom

$ pkexec gedit

Jeśli to nie zadziała, nie ma sensu ustawiać polecenia na stałe w ~ / .bashrc.

Mówiąc ściślej, najpierw wykonałem

$ xhost

aby zobaczyć, którzy użytkownicy mieli dostęp do serwera X. Widziałem, że formatem jest SI:localuser:dominicgdzie dominicmoja nazwa logowania. Więc użyłem tego samego formatu, SI:localuser:root aby dodać rootużytkownika.

Dominic108
źródło
0

Oto wariant odpowiedzi @ GeorgeLitos z następującymi zmianami:

  • Nie modyfikuj bezpośrednio /etc/lightdm/lightdm.conf, ponieważ jest to plik systemowy, który może zostać zastąpiony przez aktualizacje systemu. Zamiast tego użyj katalogu rozszerzeń /etc/lightdm/lightdm.conf.d/. Oznacza to również, że inne ustawienia nie muszą być tam duplikowane.
  • Nie potrzeba osobnego skryptu powłoki; polecenie można bezpośrednio umieścić w pliku konfiguracyjnym.

Wystarczy utworzyć plik (jako root użytkownika) /etc/lightdm/lightdm.conf.d/xhost.confz następującymi treściami:

[SeatDefaults]
display-setup-script=xhost +

Działa to na Ubuntu 16.04.5 LTS.

Ingo Karkat
źródło
-1

Edytuj plik /etc/rc.local(za pomocą sudo) i dodaj polecenie przed ostatnim poleceniem ( exit 0).

yossile
źródło
1
To nie zadziała (nigdy nie próbowałem i nie działa). Ponieważ ten skrypt nie będzie miał praw dostępu do zmiany tego ustawienia na pierwszym miejscu. Czy należy to zrobić jako użytkownik lightdm?
yurtesen
-1

Dodaj następujący wiersz do /etc/xdg/lxsession/LXDE/autostart

xhost +local:
8dost
źródło