Не удается открыть некоторые приложения, требующие уровня root [duplicate]

Я установил Ubuntu 17.10. Теперь у меня возникают проблемы с gksu:

$ gksu -dg synaptic No ask_pass set, using default! xauth: /tmp/libgksu-HgUjgQ/.Xauthority STARTUP_ID: gksu/synaptic/8760-0-alex-XPS-15-9530_TIME4974977 cmd[0]: /usr/bin/sudo cmd[1]: -H cmd[2]: -S cmd[3]: -p cmd[4]: GNOME_SUDO_PASS cmd[5]: -u cmd[6]: root cmd[7]: -- cmd[8]: synaptic buffer: -GNOME_SUDO_PASS- brute force GNOME_SUDO_PASS ended... Yeah, we're in... Unable to init server: Could not connect: Connection refused (synaptic:8767): Gtk-WARNING **: cannot open display: :1 xauth: /tmp/libgksu-HgUjgQ/.Xauthority xauth_env: (null) dir: /tmp/libgksu-HgUjgQ

Если я не использую -g, диалог пароля отключается. Так выглядит проблема с созданием tty для root.

Любые советы?

37
задан 30 October 2017 в 04:35

14 ответов

На самом деле следующий код почти работает:

#! /bin/bash set -e if [ -z "$1" ] ; then echo "Application is not specified" ; exit fi if [ $XDG_SESSION_TYPE = "wayland" ]; then if [[ -t 1 ]]; then xhost +si:localuser:root sudo -u root "$@" xhost - exit 0 fi fi gksu "$@"

(пожалуйста, извините меня за наивный стиль кодирования bash - я как бы новичок с этой темой). T не работает стабильно от Alt-F2, если последний выбор не был терминалом; в этом случае мы просто не можем установить фокус на диалог с паролем. Похоже, он работает из меню Gnome. В любом случае & Lt; 1. Это не 100% -ное решение. 2. Мне кажется, что архитекторы Ubuntu считают, что мы не должны искать какую-либо работу вокруг.

0
ответ дан 18 July 2018 в 03:28

Лучше проверить, действительно ли wayland работает сначала, прежде чем предоставить root right

if [ $XDG_SESSION_TYPE = "wayland" ]; then xhost +si:localuser:root fi
6
ответ дан 18 July 2018 в 03:28

Если вы используете Ubuntu 17.04 или выше, рекомендуется использовать брандмауэр gvfs. Просто добавьте admin: // в начало полного пути к файлу, который вы хотите открыть в приложении, например, в текстовом редакторе или в приложениях «Файлы».

Например, чтобы изменить настройки загрузки, откройте

admin:///etc/default/grub

Этот метод использует PolicyKit и по-прежнему будет работать с Ubuntu 17.10 по умолчанию Wayland, тогда как sudo и gksu для приложений с графическим интерфейсом не будут.

5
ответ дан 18 July 2018 в 03:28

Для приложений, которые используют su-to-root и pkexec, вы можете захотеть добавить этот код в /etc/xdg/autostart (см. мой комментарий на панели запуска) на свой страх и риск:

cat <<EOF | sudo tee /etc/xdg/autostart/xhost.desktop [Desktop Entry] Name=xhost Comment=Fix graphical root applications Exec="xhost +si:localuser:root" Terminal=false Type=Application EOF

Другие корневые приложения ( и ошибка 1713311).

Если вы не хотите постоянного решения, вы можете использовать @ ravery's method:

просто введите xhost +si:localuser:root в терминал перед запуском привилегированного приложения
3
ответ дан 18 July 2018 в 03:28

Решения

В Wayland часто бывает сложно запускать графические приложения с повышенными разрешениями (sudo -H, gksu ...). Это хорошая идея для выполнения таких задач с помощью инструментов командной строки.

Но есть обходные пути, если у вас есть инструмент графического интерфейса, который хорошо подходит для вас и требует повышенных разрешений. (Я использую два таких стандартных инструмента: диспетчер пакетов Synaptic, synaptic и инструмент разделения Gparted, gparted. Я использую MakeUSB для создания USB-загрузочных дисков, mkusb тоже, но он может запускать части, которые требуют повышенных разрешений без графики.)

xhost и sudo -H

Существует обходное решение, позволяющее графическим приложениям, принадлежащим другим пользователям, чем зарегистрированный пользователь в Wayland, xhost +si:localuser:root gksu и gksudo не связаны со стандартным Ubuntu и не работают здесь, но они работают в Xorg. Вместо этого вы можете использовать sudo -H . Это хорошая идея предотвратить использование графических прикладных программ, принадлежащих другим пользователям, чем зарегистрированный пользователь, xhost -si:localuser:root

gvfs admin backend

В Ubuntu 17.10 (gvfs> = 1.29.4) вы можете использовать брандмауэр администратора gvfs. Обратите внимание, что вам нужен полный путь,

gedit admin:///path/to/file

. Теоретически, метод поддержки gvfs-администратора (который использует polkit) лучше и безопаснее (чем xhost и xudo -H), независимо от пользовательского интерфейса вы используете.

Вы не запускаете все приложение как root. Эскалация привилегий происходит только в случае крайней необходимости. См. Следующую ссылку и ссылки на нее,

Ответ sisco311 в разделе «Форумы Ubuntu» «Какая наилучшая практика для использования gedit как root?» Это сообщение №4. См. Также сообщение № 6 в той же теме.

nautilus-admin

Также возможно использовать nautilus-admin для операций с файлами с повышенными разрешениями и использовать gedit с повышенными разрешениями. Это описано в следующем ответе AskUbuntu,

Ответ sisco311 в разделе «Форумы Ubuntu» «Какая наилучшая практика для использования gedit как root?» Это сообщение №4. См. Также сообщение # 6 в том же потоке.

Временный доступ для root на рабочий стол Wayland через функцию gks

Пожалуйста, избегайте sudo GUI-program. Это может привести к тому, что система перезапишет файлы конфигурации для вашего обычного идентификатора пользователя с конфигурацией root и установит права собственности и разрешения, чтобы они соответствовали root и заблокировали ваш обычный идентификатор пользователя. Вы должны запускать GUI-приложения с помощью sudo -H, который записывает файлы конфигурации в домашний каталог root /root. Пример:

sudo -H gedit myfile.txt

Но есть риск, что вы забудете -H. Вместо этого вы можете создать функцию, например gks

gks () { xhost +si:localuser:root; sudo -H "$@"; xhost -si:localuser:root; }

и сохранить ее в своем ~/.bashrc рядом с псевдонимами. Затем вы можете запустить

gks gedit myfile.txt

таким же образом, как раньше gksudo.

Тестирование

Вы можете проверить, как sudo, sudo -H и gks работают со следующими командами

sudodus@xenial32 ~ $ sudo bash -c "echo ~" /home/sudodus sudodus@xenial32 ~ $ sudo -H bash -c "echo ~" /root sudodus@xenial32 ~ $ gks () { xhost +si:localuser:root; sudo -H "$@"; xhost -si:localuser:root; } sudodus@xenial32 ~ $ gks bash -c "echo ~" localuser:root being added to access control list /root localuser:root being removed from access control list sudodus@xenial32 ~ $

и, конечно,

gks gedit myfile.txt

в соответствии с примером в предыдущем разделе.

Метод, который работает через меню Alt-F2 и Gnome Shell

Вместо добавления простой однострочной функции к ~/.bashrc вы можете создать систему, которая также работает без bash. Это может быть удобно использовать, но сложнее настроить. Обратите внимание, что вы должны установить только один из альтернатив, потому что однолинейная функция будет беспокоить, используя эту более сложную систему.

Три файла

Оболочка synaptic :

#!/bin/bash xhost +si:localuser:root if [ $# -eq 0 ] then xterm -T "gks console - enter command and password" \ -fa default -fs 14 -geometry 60x4 \ -e bash -c 'echo "gks lets you run command lines with GUI programs with temporary elevated permissions in Wayland."; \ read -p "Enter command: " cmd; \ cmdfile=$(mktemp); echo "$cmd" > "$cmdfile"; \ sudo -H bash "$cmdfile"; rm "$cmdfile"' else xterm -T "gks console - enter password" -fa default -fs 14 -geometry 60x4 -e sudo -H "$@" fi xhost -si:localuser:root;

Рабочий файл gks.desktop:

[Desktop Entry] Version=1.0 Categories=Application;System; Type=Application Name=gks Description=Run program with temporary elevated permissions in Wayland Comment=Run program with temporary elevated permissions in Wayland Exec=gks %f Icon=/usr/share/icons/gks.svg Terminal=false StartupNotify=false GenericName[en_US.UTF-8]=Run program with temporary elevated permissions in Wayland

Файл значка gks.desktop выглядит так: [ ! d47]

Вы можете загрузить файл значка или tarball со всеми тремя файлами по этой ссылке,

] Скопируйте [извлеченный или скопированный & amp; вставляемых] в следующие места,

sudo cp gks /usr/bin sudo cp gks.desktop /usr/share/applications/ sudo cp gks.svg /usr/share/icons

Выход из системы / вход в систему или перезагрузка, а также рабочий значок рабочего стола. Он будет работать в терминальном окне, например, с помощью простого решения с функцией.

Блок Alt F2:

enter image description here [!d51]

Gnome Shell меню:

enter image description here [!d51]

gks console and gparted:

Пользовательский файл сценария и рабочего стола

Если у вас есть только несколько графических приложений, которым необходимы повышенные разрешения, вы можете создать для них собственные скрипты и файлы рабочего стола и не вводить команду (имя приложения). Вы только вводите пароль, который не сложнее по сравнению с предыдущими версиями Ubuntu (вы все равно должны вводить пароль).

Пример с простой программой GUI xlogo, которая поставляется вместе с программным пакетом x11-apps:

Сводный текст Alt F2 (упрощенный по сравнению с gks),

#!/bin/bash xhost +si:localuser:root xterm -T "gks console - enter password" -fa default -fs 14 -geometry 60x4 -e sudo -H xlogo xhost -si:localuser:root;

Рабочий файл gkslogo.desktop:

[Desktop Entry] Version=1.0 Categories=Application;System; Type=Application Name=gkslogo Description=Run program with temporary elevated permissions in Wayland Comment=Run program with temporary elevated permissions in Wayland Exec=gkslogo Icon=/usr/share/icons/gks.svg Terminal=false StartupNotify=false GenericName[en_US.UTF-8]=Run program with temporary elevated permissions in Wayland

Я ленился и использовал один и тот же файл значков gkslogo.desktop

Скопировал [скопированный & amp; вставляемые] в следующие места,

sudo cp gkslogo /usr/bin sudo cp gkslogo.desktop /usr/share/applications/

консоль gks [logo] и xlogo:

17
ответ дан 18 July 2018 в 03:28

Обратите внимание, что этот ответ относится к версиям Ubuntu с использованием Wayland, 17.10 является первой версией, использующей Wayland по умолчанию.

Это особенность, а не ошибка! Это особенность дизайна Wayland, что вы не можете запускать графические приложения как root из терминала.

Основные обсуждения, конечно же, на сайтах Fedora. См. Ошибка Fedora # 1274451, а графические приложения не могут запускаться как root в wayland (например, gedit, beesu, gparted, nautilus) в Ask Fedora.

Отчет об ошибке Ubuntu: Ошибка Fedora # 1274451 Ошибка в Ubuntu: Ошибка в Fedora # 1274451

Потенциальная работа. Если вы редактируете системные файлы с помощью графического редактора (например, gedit), используйте инструмент командной строки, например nano или vim или emacs. nano, как правило, проще для новых пользователей, vim является более мощным и имеет больше возможностей, см. этот учебник Vim или аналогичный.

Во всяком случае, если вы действительно хотите или хотите Потенциал работаем вокруг , сначала установите xhost, что вынуждает отказаться от Xserver.

Чтобы установить разрешения:

xhost si:localuser:root

По завершении удаления разрешений

xhost -si:localuser:root

Вы можете добавить графическую / настольную функцию для этого в соответствии с , это Vim Tutorial

Приложения pkexec'ed могут быть исцелены с помощью xhost +si:localuser:root в автозапуске XDG следующим образом: cat <<EOF | sudo tee /etc/xdg/autostart/xhost.desktop [Desktop Entry] Name=xhost Comment=Fix graphical root applications Exec="xhost +si:localuser:root" Terminal=false Type=Application EOF

Вы можете добавить эту команду xhost в .bashrc, но я бы посоветовал пару псевдонимов

alias gsuon='xhost si:localuser:root' alias gsuoff='xhost -si:localuser:root'

Вы можете назвать псевдонимы независимо вы хотите.

Подробнее см .:

https://bugs.launchpad.net/ubuntu/+source/backintime/+bug/1713313 https: //bugs.launchpad. net / ubuntu / + source / nmap / + ошибка / 1713311 Arch Wiki: Запуск X-приложений как root Arch Wiki: Xhost Что такое xhost и xhost + si?

Вернитесь к Xorg

Если вы предпочитаете Xorg по любой причине, вы можете выбрать запуск на Xorg при входе в систему

См. Как вы переключаетесь с Wayland на Xorg в Ubuntu 17.10?

44
ответ дан 18 July 2018 в 03:28

Если приложение поддерживает Wayland API, вы можете запустить его как root с помощью команды sudo -EH application.

. Переключатель -E сообщает sudo сохранять переменные среды (а также WAYLAND_SOCKET и XDG_RUNTIME_DIR), необходимые для приложений wayland , Всегда лучше использовать эту опцию из-за неприятного взлома xhost, предложенного в других ответах. xhost позволяет приложению запускаться из X-оболочки, которая менее безопасна, чем использование Wayland (общий буфер обмена, кейлоггеринг и т. д.). Трюк sudo -EH не будет работать с приложением, которое не было переписано для wayland, например gparted, но будет работать с gedit и т. Д.

0
ответ дан 18 July 2018 в 03:28

На самом деле следующий код почти работает:

#! /bin/bash set -e if [ -z "$1" ] ; then echo "Application is not specified" ; exit fi if [ $XDG_SESSION_TYPE = "wayland" ]; then if [[ -t 1 ]]; then xhost +si:localuser:root sudo -u root "$@" xhost - exit 0 fi fi gksu "$@"

(пожалуйста, извините меня за наивный стиль кодирования bash - я как бы новичок с этой темой). T не работает стабильно от Alt-F2, если последний выбор не был терминалом; в этом случае мы просто не можем установить фокус на диалог с паролем. Похоже, он работает из меню Gnome. В любом случае & Lt; 1. Это не 100% -ное решение. 2. Мне кажется, что архитекторы Ubuntu считают, что мы не должны искать какую-либо работу вокруг.

0
ответ дан 24 July 2018 в 17:51

Лучше проверить, действительно ли wayland работает сначала, прежде чем предоставить root right

if [ $XDG_SESSION_TYPE = "wayland" ]; then xhost +si:localuser:root fi
6
ответ дан 24 July 2018 в 17:51

Если вы используете Ubuntu 17.04 или выше, рекомендуется использовать брандмауэр gvfs. Просто добавьте admin: // в начало полного пути к файлу, который вы хотите открыть в приложении, например, в текстовом редакторе или в приложениях «Файлы».

Например, чтобы изменить настройки загрузки, откройте

admin:///etc/default/grub

Этот метод использует PolicyKit и по-прежнему будет работать с Ubuntu 17.10 по умолчанию Wayland, тогда как sudo и gksu для приложений с графическим интерфейсом не будут.

5
ответ дан 24 July 2018 в 17:51
  • 1
    Благодарю. Для меня это лучше всего работало с gedit (за исключением странного поведения, когда используется просто как gedit admin:), очень странно с nautilus (почти бесполезно) и полностью с ошибкой ] синаптической . Есть идеи? – Sadi 30 October 2017 в 22:52
  • 2
    Это не будет работать с синаптическим. Однако он должен работать нормально в nautilus, но вам нужно выбрать каталог, а не файл типа admin:///etc/ – Jeremy Bicha 1 November 2017 в 00:28
  • 3
    Это похоже на работу с nautilus , но вы увидите, что я имею в виду («очень странно», «почти бесполезно»), даже когда вы открываете директорию напрямую и начинаете пытаться это сделать и что ;-) – Sadi 1 November 2017 в 14:46
  • 4
    @ Сади, я понятия не имею, что такое «это и что» является. Вы можете указать ошибку, если она не работает правильно. – Jeremy Bicha 16 November 2017 в 23:13

Для приложений, которые используют su-to-root и pkexec, вы можете захотеть добавить этот код в /etc/xdg/autostart (см. мой комментарий на панели запуска) на свой страх и риск:

cat <<EOF | sudo tee /etc/xdg/autostart/xhost.desktop [Desktop Entry] Name=xhost Comment=Fix graphical root applications Exec="xhost +si:localuser:root" Terminal=false Type=Application EOF

Другие корневые приложения ( и ошибка 1713311).

Если вы не хотите постоянного решения, вы можете использовать @ ravery's method:

просто введите xhost +si:localuser:root в терминал перед запуском привилегированного приложения
3
ответ дан 24 July 2018 в 17:51

Решения

В Wayland часто бывает сложно запускать графические приложения с повышенными разрешениями (sudo -H, gksu ...). Это хорошая идея для выполнения таких задач с помощью инструментов командной строки.

Но есть обходные пути, если у вас есть инструмент графического интерфейса, который хорошо подходит для вас и требует повышенных разрешений. (Я использую два таких стандартных инструмента: диспетчер пакетов Synaptic, synaptic и инструмент разделения Gparted, gparted. Я использую MakeUSB для создания USB-загрузочных дисков, mkusb тоже, но он может запускать части, которые требуют повышенных разрешений без графики.)

xhost и sudo -H

Существует обходное решение, позволяющее графическим приложениям, принадлежащим другим пользователям, чем зарегистрированный пользователь в Wayland, xhost +si:localuser:root gksu и gksudo не связаны со стандартным Ubuntu и не работают здесь, но они работают в Xorg. Вместо этого вы можете использовать sudo -H . Это хорошая идея предотвратить использование графических прикладных программ, принадлежащих другим пользователям, чем зарегистрированный пользователь, xhost -si:localuser:root

gvfs admin backend

В Ubuntu 17.10 (gvfs> = 1.29.4) вы можете использовать брандмауэр администратора gvfs. Обратите внимание, что вам нужен полный путь,

gedit admin:///path/to/file

. Теоретически, метод поддержки gvfs-администратора (который использует polkit) лучше и безопаснее (чем xhost и xudo -H), независимо от пользовательского интерфейса вы используете.

Вы не запускаете все приложение как root. Эскалация привилегий происходит только в случае крайней необходимости. См. Следующую ссылку и ссылки на нее,

Ответ sisco311 в разделе «Форумы Ubuntu» «Какая наилучшая практика для использования gedit как root?» Это сообщение №4. См. Также сообщение № 6 в той же теме.

nautilus-admin

Также возможно использовать nautilus-admin для операций с файлами с повышенными разрешениями и использовать gedit с повышенными разрешениями. Это описано в следующем ответе AskUbuntu,

Ответ sisco311 в разделе «Форумы Ubuntu» «Какая наилучшая практика для использования gedit как root?» Это сообщение №4. См. Также сообщение # 6 в том же потоке.

Временный доступ для root на рабочий стол Wayland через функцию gks

Пожалуйста, избегайте sudo GUI-program. Это может привести к тому, что система перезапишет файлы конфигурации для вашего обычного идентификатора пользователя с конфигурацией root и установит права собственности и разрешения, чтобы они соответствовали root и заблокировали ваш обычный идентификатор пользователя. Вы должны запускать GUI-приложения с помощью sudo -H, который записывает файлы конфигурации в домашний каталог root /root. Пример:

sudo -H gedit myfile.txt

Но есть риск, что вы забудете -H. Вместо этого вы можете создать функцию, например gks

gks () { xhost +si:localuser:root; sudo -H "$@"; xhost -si:localuser:root; }

и сохранить ее в своем ~/.bashrc рядом с псевдонимами. Затем вы можете запустить

gks gedit myfile.txt

таким же образом, как раньше gksudo.

Тестирование

Вы можете проверить, как sudo, sudo -H и gks работают со следующими командами

sudodus@xenial32 ~ $ sudo bash -c "echo ~" /home/sudodus sudodus@xenial32 ~ $ sudo -H bash -c "echo ~" /root sudodus@xenial32 ~ $ gks () { xhost +si:localuser:root; sudo -H "$@"; xhost -si:localuser:root; } sudodus@xenial32 ~ $ gks bash -c "echo ~" localuser:root being added to access control list /root localuser:root being removed from access control list sudodus@xenial32 ~ $

и, конечно,

gks gedit myfile.txt

в соответствии с примером в предыдущем разделе.

Метод, который работает через меню Alt-F2 и Gnome Shell

Вместо добавления простой однострочной функции к ~/.bashrc вы можете создать систему, которая также работает без bash. Это может быть удобно использовать, но сложнее настроить. Обратите внимание, что вы должны установить только один из альтернатив, потому что однолинейная функция будет беспокоить, используя эту более сложную систему.

Три файла

Оболочка synaptic :

#!/bin/bash xhost +si:localuser:root if [ $# -eq 0 ] then xterm -T "gks console - enter command and password" \ -fa default -fs 14 -geometry 60x4 \ -e bash -c 'echo "gks lets you run command lines with GUI programs with temporary elevated permissions in Wayland."; \ read -p "Enter command: " cmd; \ cmdfile=$(mktemp); echo "$cmd" > "$cmdfile"; \ sudo -H bash "$cmdfile"; rm "$cmdfile"' else xterm -T "gks console - enter password" -fa default -fs 14 -geometry 60x4 -e sudo -H "$@" fi xhost -si:localuser:root;

Рабочий файл gks.desktop:

[Desktop Entry] Version=1.0 Categories=Application;System; Type=Application Name=gks Description=Run program with temporary elevated permissions in Wayland Comment=Run program with temporary elevated permissions in Wayland Exec=gks %f Icon=/usr/share/icons/gks.svg Terminal=false StartupNotify=false GenericName[en_US.UTF-8]=Run program with temporary elevated permissions in Wayland

Файл значка gks.desktop выглядит так: [ ! d47]

Вы можете загрузить файл значка или tarball со всеми тремя файлами по этой ссылке,

] Скопируйте [извлеченный или скопированный & amp; вставляемых] в следующие места,

sudo cp gks /usr/bin sudo cp gks.desktop /usr/share/applications/ sudo cp gks.svg /usr/share/icons

Выход из системы / вход в систему или перезагрузка, а также рабочий значок рабочего стола. Он будет работать в терминальном окне, например, с помощью простого решения с функцией.

Блок Alt F2:

enter image description here [!d51]

Gnome Shell меню:

enter image description here [!d51]

gks console and gparted:

Пользовательский файл сценария и рабочего стола

Если у вас есть только несколько графических приложений, которым необходимы повышенные разрешения, вы можете создать для них собственные скрипты и файлы рабочего стола и не вводить команду (имя приложения). Вы только вводите пароль, который не сложнее по сравнению с предыдущими версиями Ubuntu (вы все равно должны вводить пароль).

Пример с простой программой GUI xlogo, которая поставляется вместе с программным пакетом x11-apps:

Сводный текст Alt F2 (упрощенный по сравнению с gks),

#!/bin/bash xhost +si:localuser:root xterm -T "gks console - enter password" -fa default -fs 14 -geometry 60x4 -e sudo -H xlogo xhost -si:localuser:root;

Рабочий файл gkslogo.desktop:

[Desktop Entry] Version=1.0 Categories=Application;System; Type=Application Name=gkslogo Description=Run program with temporary elevated permissions in Wayland Comment=Run program with temporary elevated permissions in Wayland Exec=gkslogo Icon=/usr/share/icons/gks.svg Terminal=false StartupNotify=false GenericName[en_US.UTF-8]=Run program with temporary elevated permissions in Wayland

Я ленился и использовал один и тот же файл значков gkslogo.desktop

Скопировал [скопированный & amp; вставляемые] в следующие места,

sudo cp gkslogo /usr/bin sudo cp gkslogo.desktop /usr/share/applications/

консоль gks [logo] и xlogo:

17
ответ дан 24 July 2018 в 17:51
  • 1
    Является ли «Временный доступ для root на рабочий стол Wayland через функцию gks»? более безопасный (например, добавление файла, например /etc/xdg/autostart/xhost.destop), поскольку он заканчивается восстановлением исходной среды? И можем ли мы безопасно заменить sudo -H на gksu в псевдониме, чтобы использовать вставку в файлы .desktop и т. Д.? – Sadi 30 October 2017 в 23:09
  • 2
    Да, я считаю, что безопаснее разрешать root-доступ к рабочему столу только при необходимости. И да, вы можете заменить sudo -H на gksu в функции, он может работать лучше для ваших приложений. – sudodus 30 October 2017 в 23:15
  • 3
    Как это сделать в случае меню Alt-F2 или Gnome Shell? – Alex Chapiro 31 October 2017 в 13:26
  • 4
    «Wayland» предназначен для того, чтобы не разрешать повышенные (sudo -H, gksu ...) разрешения с приложениями GUI-приложений. & quot; -- ложный. Wayland позволяет приложениям root просто отлично. Вы можете увидеть это, выполнив sudo -E gedit. В настоящее время имеется ошибка в gdm, где он настраивает сервер совместимости Xwayland X11, чтобы не поддерживать XAUTHORITY, что требуется для приложений X11, работающих под управлением root. Родные приложения wayland работают под управлением root. – psusi 21 February 2018 в 06:53
  • 5
    @psusi, я изменил ответ, чтобы избежать заявлений о дизайне и намерениях Wayland. – sudodus 21 February 2018 в 11:01

Обратите внимание, что этот ответ относится к версиям Ubuntu с использованием Wayland, 17.10 является первой версией, использующей Wayland по умолчанию.

Это особенность, а не ошибка! Это особенность дизайна Wayland, что вы не можете запускать графические приложения как root из терминала.

Основные обсуждения, конечно же, на сайтах Fedora. См. Ошибка Fedora # 1274451, а графические приложения не могут запускаться как root в wayland (например, gedit, beesu, gparted, nautilus) в Ask Fedora.

Отчет об ошибке Ubuntu: Ошибка Fedora # 1274451 Ошибка в Ubuntu: Ошибка в Fedora # 1274451

Потенциальная работа. Если вы редактируете системные файлы с помощью графического редактора (например, gedit), используйте инструмент командной строки, например nano или vim или emacs. nano, как правило, проще для новых пользователей, vim является более мощным и имеет больше возможностей, см. этот учебник Vim или аналогичный.

Во всяком случае, если вы действительно хотите или хотите Потенциал работаем вокруг , сначала установите xhost, что вынуждает отказаться от Xserver.

Чтобы установить разрешения:

xhost si:localuser:root

По завершении удаления разрешений

xhost -si:localuser:root

Вы можете добавить графическую / настольную функцию для этого в соответствии с , это Vim Tutorial

Приложения pkexec'ed могут быть исцелены с помощью xhost +si:localuser:root в автозапуске XDG следующим образом: cat <<EOF | sudo tee /etc/xdg/autostart/xhost.desktop [Desktop Entry] Name=xhost Comment=Fix graphical root applications Exec="xhost +si:localuser:root" Terminal=false Type=Application EOF

Вы можете добавить эту команду xhost в .bashrc, но я бы посоветовал пару псевдонимов

alias gsuon='xhost si:localuser:root' alias gsuoff='xhost -si:localuser:root'

Вы можете назвать псевдонимы независимо вы хотите.

Подробнее см .:

https://bugs.launchpad.net/ubuntu/+source/backintime/+bug/1713313 https: //bugs.launchpad. net / ubuntu / + source / nmap / + ошибка / 1713311 Arch Wiki: Запуск X-приложений как root Arch Wiki: Xhost Что такое xhost и xhost + si?

Вернитесь к Xorg

Если вы предпочитаете Xorg по любой причине, вы можете выбрать запуск на Xorg при входе в систему

См. Как вы переключаетесь с Wayland на Xorg в Ubuntu 17.10?

44
ответ дан 24 July 2018 в 17:51
  • 1
    Это обходное решение работает с помощью Mir ? – Eliah Kagan 4 October 2017 в 17:59
  • 2
    Возможно, я не знаю о МИРе. – Panther 4 October 2017 в 18:01
  • 3
    Или просто xhost +local: – chaskes 4 October 2017 в 19:25
  • 4
    «Это особенность, а не ошибка!» ... вздох. Подобные вещи - именно причина, по которой я не могу убедить моего друга и коллег переключиться на Linux. Использование VIM и Nano не является альтернативой GEdit. Gedit работает как блокнот, в то время как вам нужно изучить CRTL-код для других. И возьмите, например, Nano, используя термины типа «Write Out». вместо «Сохранить». ... Очень недружественный пользователь. – JHBonarius 30 October 2017 в 11:43
  • 5
    Это также полностью ломает gparted, что является очень важным для доступа. Что случилось с «Не пытайтесь помешать глупым людям делать глупые вещи; вы преуспеете в предотвращении умных людей от умных дел. & quot ;? – Matthew Najmon 23 February 2018 в 22:32

Если приложение поддерживает Wayland API, вы можете запустить его как root с помощью команды sudo -EH application.

. Переключатель -E сообщает sudo сохранять переменные среды (а также WAYLAND_SOCKET и XDG_RUNTIME_DIR), необходимые для приложений wayland , Всегда лучше использовать эту опцию из-за неприятного взлома xhost, предложенного в других ответах. xhost позволяет приложению запускаться из X-оболочки, которая менее безопасна, чем использование Wayland (общий буфер обмена, кейлоггеринг и т. д.). Трюк sudo -EH не будет работать с приложением, которое не было переписано для wayland, например gparted, но будет работать с gedit и т. Д.

0
ответ дан 24 July 2018 в 17:51

Другие вопросы по тегам:

Похожие вопросы: