У меня был такой же вопрос, как и у вас, но для обычного пользователя. Допустим, я хочу запустить firefox, используя учетную запись пользователя foo. Я вошел как бар:
[bar@localhost ~]$ sudo -u foo -H firefox
К сожалению, эта команда завершилась с той же ошибкой, что и в вопросе (т. Е. Протокол не указан и не может открыть дисплей)
Моим решением было просто добавить пользователя foo в список авторизованного доступа к X-серверу.
xhost si:localuser:foo
И все, я смог запустить Firefox (и другое приложение X), используя sudo
пользователя foo.
Справочная информация : в X Window существует архитектура клиент / сервер. Когда вы запускаете приложение, вы запрашиваете у X-сервера авторизацию для его отображения. По умолчанию, когда вы открываете сеанс (вы входите в систему графически), вам (вашему пользователю), очевидно, разрешается общаться с сервером и отображать приложения. Другие пользователи не имеют этого разрешения, если вы не укажете его. xhost
инструмент для манипулирования списком разрешений si
Указывает на то, что правило на стороне сервера и авторизации локального пользователя foo
к приложениям дисплея. X Window очень мощен в этом отношении, и вы можете отображать удаленные приложения локально, играя с DISPLAY
переменной окружения и xhost
(но не ограничиваясь ими). В старые времена, когда люди печаталиxhost +
и косвенно позволил каждому использовать свой сеанс X, стало возможным отображать приложение на экране для шалостей ;-) не так много в наше время, как люди все меньше и меньше используют архитектуру клиент / сервер X Window (по крайней мере, что я наблюдаю в последние 10 лет).
PS: Я сделал это для того, чтобы запустить Firefox в своего рода «тюрьме» (чтобы избежать такой уязвимости, как для pdf.js в будущем). Но я быстро обнаружил, что вызов Firefox через sudo не позволит ему получить доступ ни к аудио, ни к видеооборудованию. Но есть один парень, который четко объясняет, как активировать аппаратное ускорение видео и аудио при вызове Firefox через sudo . YMMV с этими инструкциями, например, мне по-прежнему отказано в разрешении на аудио, но видео в порядке (проверено на Fedora 22 с включенным SELinux).