1

Мне нужно запускать следующую команду sudo xhost SI:localuser:root каждый раз, когда я запускаю свою машину. Поэтому я хотел бы автоматизировать этот процесс. Я использую Ubuntu 12.04 LTS для этого.

Я попытался поместить эту команду в мой файл /etc/rc.local но она не работает, потому что при запуске должен появиться xhost :

SI:localuser:<myUser>
SI:localuser:root

Файл /etc/rc.local выглядит следующим образом:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

xhost SI:localuser:root

exit 0

Я что-то пропустил?

* PS .: также предложить на комментарии ** Дело я завязывания сделать описано на этот вопрос здесь. Могу ли я сделать это лучше?

2 ответа2

2

Это не сработает, потому что:

  1. rc.local запускается до запуска сервера X11.

  2. rc.local не знает, где находится сервер X11. Другими словами, он не знает правильное значение для $ DISPLAY.

    Всегда имейте в виду, что может быть несколько серверов X11 - Ubuntu поддерживает "быстрое переключение пользователей", поэтому у вас может быть один экземпляр Xorg для себя, а второй - для экрана входа в систему.

  3. rc.local не имеет доступа ни к одному из работающих в настоящее время серверов X11.

    Подумайте об этом: если вам нужно предоставить доступ root с помощью xhost , это означает, что root еще не имеет доступа. И rc.local работает как root.

Все три пункта также применимы к cronjobs, правилам udev и большинству других вещей.

2

Как правильно заметил @grawity, это не сработает. Если вы действительно хотите это сделать (что кажется довольно плохой идеей), создайте файл ~/.xinitrc со следующими строками:

#!/usr/bin/env bash
xhost SI:localuser:root

xhost не нужно запускать от имени пользователя root поскольку вы являетесь владельцем X-сессии. Сейчас xinitrc довольно старый, и я не уверен, что он будет прочитан в современных средах рабочего стола. Вероятно, вы могли бы достичь того же, изменив свойства сеанса GNOME.

Как правило, включение корневого доступа к вашему X-серверу не очень хорошая идея. В любое время, когда вам нужен root для запуска графической программы, вы можете отключить контроль доступа:

xhost + 
sudo gedit
xhost -

Я уверен, что вам не нужно делать это на большинстве современных систем. Что именно ты пытаешься сделать? Программы, вызываемые с помощью sudo , в любом случае должны иметь доступ к вашему X-серверу.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .