Создайте ID пользователя `root`, чтобы заставить` gedit` создать файл конфигурации пользователя

При использовании полномочий sudo и вызове gedit меню верхнего уровня с File Edit View Search Tools Documents Help отсутствует.

Если я создам ID пользователя root и войду один раз и вызову gedit, он создаст необходимые файлы конфигурации пользователя, которые могли бы исправить это?

Будет это также заставляет раздражающие сообщения об ошибках исчезать всякий раз, когда я использую sudo, gksu или pkexec в качестве обычного пользователя с повышенными привилегиями до gedit?

Будут ли другие преимущества с Nautilus и другими? Производные от Gnome приложений Ubuntu?

ПРИМЕЧАНИЕ: с помощью sudo вы можете использовать Google pkexec gedit 3,5 тыс. Обращений, gksu gedit 40 тыс. Обращений или sudo gedit 500 тыс. Обращений. Я в меньшинстве использую первый метод, но я верю, что он станет стандартом в Ubuntu 17.04.


12 июня 2017 г. Обновление Вот список ошибок, которые вы получаете при использовании pkexec gedit:

(gedit:13003): Gtk-WARNING **: Calling Inhibit failed: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.SessionManager was not provided by any .service files

** (gedit:13003): WARNING **: Set document metadata failed: Setting attribute metadata::gedit-spell-enabled not supported

** (gedit:13003): WARNING **: Set document metadata failed: Setting attribute metadata::gedit-encoding not supported

** (gedit:13003): WARNING **: Set document metadata failed: Setting attribute metadata::gedit-position not supported

В этом отчете об ошибке по состоянию на 5 июня 2017 года существует обязательство исправить эти отвлекающие сообщения. Не указано, когда исправление будет находиться в восходящем потоке, а также будет ли реализована эта функциональность или сообщения об ошибках просто исчезнут.

Обратите внимание, что отчет об ошибке был подан более года назад, и за это время он затронул только 18 человек.

4
задан 13 June 2017 в 04:16

2 ответа

1136 Еще раз с чувством. НЕ ИСПОЛЬЗУЙТЕ ГРАФИЧЕСКИЕ ПРИЛОЖЕНИЯ КАК ROOT!

Теперь есть некоторые исключения из вышеприведенного правила. Например, любая часть панели управления Ubuntu, которая запрашивает root, в целом безопасна, но только потому, что она сохраняет привилегии столько времени, сколько необходимо, и в этот момент она немедленно сбросит их обратно в обычный режим. Точно так же они также специально разработаны для эффективного использования root и таким образом, чтобы ничего не сломать. Короче говоря, все gedit и большинство других приложений не делают.

Если вам действительно нужно, чтобы gedit имел свою собственную конфигурацию в папке /root, запустите его так:

sudo -i gedit

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

Вы можете обойтись без отсутствия меню, используя флаг sudo -E, но это все равно вызовет раздражение у DBus / DConf / что угодно. В этом режиме меню будет встроено непосредственно в окно gedit, потому что мы все еще не можем получить ссылку на DBus / Ayatana.

Это перекликается с мнением разработчиков Ubuntu и не является ошибкой . Они придерживаются мнения, что GUI - это, по сути, «простой режим», а доступ root фактически не «легкий режим». Если вы хотите root, перейдите в терминал и используйте его там. Фактически, это в значительной степени допустимая форма сопротивления - если вы не можете использовать nano для редактирования файлов, вы не должны возиться как пользователь root.

Если вы обязательно должны использовать root под GUI (что я настоятельно советую вам не делать, даже как его собственный пользователь), создайте файл с именем /etc/lightdm/lightdm.conf и поместите его в этот файл:

[SeatDefaults]
greeter-show-manual-login=true

Перезапустите службу lightdm, используя sudo systemctl restart lightdm.service, и вы сможете войти в систему как root. Если вы не используете lightdm, найдите и следуйте инструкциям, относящимся к этому диспетчеру дисплея.

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

sudo passwd root

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

На этой ноте, когда вы действительно сделаете это, gedit будет работать как root (как вы ожидаете) в пользовательской сессии root. Однако, как только вы вернетесь на основной сеанс, он все равно откажется работать (по причинам, указанным выше).


Учетная запись root не должна использоваться для обхода столь ненавистной ошибки Permission denied, волей-неволей. Думайте об этом сообщении как о следующем:

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

Тем не менее, посмотрите, есть ли решение, которое не предусматривает переход на привилегированную учетную запись. Гораздо проще удалить и воссоздать сломанного пользователя, чем воссоздать сломанную систему.

0
ответ дан 13 June 2017 в 04:16

Я закончил тем, что разочаровался в корне / sudo наличие своей собственной установки конфигурации для gedit. Я также разочаровался pkexec замена gksu и используемый sudo -H вместо этого. Я затем создал сценарий для "одалживания" установки конфигурации от текущего пользователя для инициализации:

  • Разъем Ins
  • Имя шрифта и размер
  • Позиции табуляции и преобразовывают Вкладки в опцию пробелов
  • Строка переносится по сравнению с горизонтальной полосой прокрутки
  • Весь другой ток пользователь gedit возможные параметры конфигурации

Без дальнейшей суматохи вот сценарий:

#!/bin/bash

# NAME: sgedit
# PATH: /mnt/e/bin
# DESC: Run gedit as sudo using $USER preferences
# DATE: June 17, 2018.

# Must not prefix with sudo when calling script
if [[ $(id -u) == 0 ]]; then
    zenity --error --text "You cannot call this script using sudo. Aborting."
    exit 99
fi

# Get user preferences before elevating to sudo
gsettings list-recursively | grep -i gedit | grep -v history | \
    grep -v docinfo | \
    grep -v virtual-root | grep -v state.window > /tmp/gedit.gsettings

sudoFunc () {

    # Must be running as sudo
    if [[ $(id -u) != 0 ]]; then
        zenity --error --text "Sudo password authentication failed. Aborting."
        exit 99
    fi

    # Get sudo's gedit preferences
    gsettings list-recursively | grep -i gedit | grep -v history | \
        grep -v docinfo | \
        grep -v virtual-root | grep -v state.window > /tmp/gedit.gsettings.root
    diff /tmp/gedit.gsettings.root /tmp/gedit.gsettings | grep '>' > /tmp/gedit.gsettings.diff
    sed -i 's/>/gsettings set/g; s/uint32 //g' /tmp/gedit.gsettings.diff
    chmod +x /tmp/gedit.gsettings.diff
    bash -x /tmp/gedit.gsettings.diff  # Display override setting to terminal
    nohup gedit -g 1300x840+1+1220 $@ &>/dev/null &
#              Set the X geometry window size (WIDTHxHEIGHT+X+Y).

}

FUNC=$(declare -f sudoFunc)
sudo -H bash -c "$FUNC; sudoFunc $*;"

exit 0
  • Вы не называете сценарий с sudo скорее используйте sgedit /path/to/root-owned-file
  • Командная строка возвращается немедленно с отдельным gedit Открытое окно GUI
  • Измените геометрию 1300x840+1+1220 к Вашей установке монитора. Единственный "обычный" монитор был бы чем-то как 700x400+0+0
0
ответ дан 13 June 2017 в 14:16
  • 1
    хорошо " stable". какой I' m высказывание частный пользователь shouldn' t заботятся о LTS – tatsu 26 March 2019 в 09:50

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

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