После входа в систему как другой пользователь, как я могу запускать программы с графическим интерфейсом?
thufir@doge:~$
thufir@doge:~$ sudo -u hawat -i
hawat@doge:~$
hawat@doge:~$ whoami
hawat
hawat@doge:~$
hawat@doge:~$ pwd
/home/hawat
hawat@doge:~$
hawat@doge:~$ echo $HOME
/home/hawat
hawat@doge:~$
hawat@doge:~$ firefox
No protocol specified
Failed to connect to Mir: Failed to connect to server socket: No such file or directory
Unable to init server: Could not connect: Connection refused
Error: cannot open display: :0
hawat@doge:~$
Этот ответ работает на моих Ubuntu 16.04 и Mir (с небольшими изменениями):
Запустите команду x как другой пользователь, используя xauth
Скрипт оболочки для оболочки:
Для удобства я создал сценарий оболочки-оболочки , который вы можете загрузить
/usr/local/bin/xsudo
и пометить как исполняемый (chmod +x /usr/local/bin/xsudo
).Тогда просто запустите:
Потенциальные альтернативы:
pam_xauth
(s. Этот ответ ), однако это почему-то не работает для меня. (Я все еще получаю сообщение об ошибке, что Firefox не может подключиться к дисплею по адресу: 0)xhost +local:
или аналогичной, который будет делатьgksudo -u hawat firefox
работу без обертки сценария. Однако имейте в виду, что это открывает лазейку в безопасности : любой активный пользователь на вашем локальном хосте сможет получить доступ к вашей клавиатуре, мыши, экрану и т. Д.источник
Потратив слишком много времени на это, я обнаружил, что с Gnome в Ubuntu 16.04 правильное значение
DISPLAY=:1
не так,DISPLAY=:0
как было с незапамятных времен.источник
export DISPLAY =: 0 работает нормально, но это временное решение, так как вам нужно вводить его каждый раз, когда вы открываете терминал.
Постоянное решение: проблема может быть связана с переменной env_keep в / etc / sudoers. Добавьте следующую строку в конец / etc / sudoers, используя gedit или sudo visudo.
Примечание. Не забывайте всегда использовать «+ =» при добавлении в env_keep. В случае, если есть какие-либо другие env_keep с "=", измените их на "+ =", потому что использование "=" переопределит другие значения.
источник
visudo
оболочку, которая обеспечивает некоторую проверку работоспособности перед записью нового файла sudoers.