При использовании полномочий 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 человек.
Теперь есть некоторые исключения из вышеприведенного правила. Например, любая часть панели управления 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
, волей-неволей. Думайте об этом сообщении как о следующем:
Эй, то, что вы делаете , может иметь серьезные побочные эффекты для вашей системы. Подумайте очень внимательно и перепроверьте вашу команду, чтобы убедиться, что вы делаете именно то, что вы собираетесь делать. Если вы уверены, что это именно то, что вы хотите сделать, поднимитесь до минимально возможного уровня привилегий, который можно использовать, чтобы делать то, что вы хотите.
blockquote>Тем не менее, посмотрите, есть ли решение, которое не предусматривает переход на привилегированную учетную запись. Гораздо проще удалить и воссоздать сломанного пользователя, чем воссоздать сломанную систему.
Я закончил тем, что разочаровался в корне / sudo наличие своей собственной установки конфигурации для gedit
. Я также разочаровался pkexec
замена gksu
и используемый sudo -H
вместо этого. Я затем создал сценарий для "одалживания" установки конфигурации от текущего пользователя для инициализации:
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
Открытое окно GUI1300x840+1+1220
к Вашей установке монитора. Единственный "обычный" монитор был бы чем-то как 700x400+0+0