Команда для запуска с правами root при загрузке не работает
Мне нужно выполнить следующую команду 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 ответа
Как правильно заметил @grawity, это не сработает. Если вы действительно хотите сделать это (что кажется довольно плохой идеей), создайте ~/.xinitrc
файл с этими строками:
#!/usr/bin/env bash
xhost SI:localuser:root
xhost
команду не нужно запускать как root
так как вы являетесь владельцем X сессии. Сейчас, xinitrc
довольно старый, и я не уверен, что он будет прочитан в современных средах рабочего стола. Вероятно, вы могли бы достичь того же, изменив свойства сеанса GNOME.
Как правило, включение корневого доступа к вашему X-серверу не очень хорошая идея. В любое время, когда вам нужен root для запуска графической программы, вы можете отключить контроль доступа:
xhost +
sudo gedit
xhost -
Я уверен, что вам не нужно делать это на большинстве современных систем. Что именно ты пытаешься сделать? Программы, запускаемые с sudo
в любом случае должен иметь доступ к вашему X-серверу.
Это не сработает, потому что:
rc.local запускается до запуска сервера X11.
rc.local не знает, где находится сервер X11. Другими словами, он не знает правильное значение для $DISPLAY.
Всегда помните, что может быть несколько серверов X11 - Ubuntu поддерживает "быстрое переключение пользователей", поэтому у вас может быть один экземпляр Xorg для себя, а второй - для экрана входа в систему.
rc.local не имеет доступа ни к одному из работающих в настоящее время серверов X11.
Подумайте об этом: если вам нужно дать доступ к root с помощью
xhost
, это означает, что root еще не имеет доступа. И rc.local работает как root.
Все три пункта также относятся к cronjobs, правилам udev и большинству других вещей.