Как запустить Терминал от имени пользователя root?

35

Когда мы хотим запустить программы как корень мы используем sudo, gksu, gksudoи т.д. Теперь мой вопрос , как же мы можем запустить терминал в качестве суперпользователя в терминале?

Я попытался с помощью gksudo terminalи , gksu terminalно ничего не происходит. и бегом sudo terminalя получаю ошибку sudo: terminal: command not found.

αғsнιη
источник
4
Это gnome-terminal. Так что попробуй sudo gnome-terminal.
g_p
1
Есть ли какое-то преимущество в запуске самой программы терминала от имени пользователя root? почему бы просто не запустить интерактивную корневую оболочку внутри терминала с помощью sudo -i?
SteelDriver
2
@Guru sudoне следует использовать для запуска таких графических программ. Если gksu/ gksudoне (или не может быть) установлен, sudo -H ...(или sudo -i ...) можно использовать для запуска графического приложения ...от имени пользователя root.
Элия ​​Каган
да вы правы.
g_p

Ответы:

53

Эмулятор терминала по умолчанию в Ubuntu - это терминал GNOME . Он расположен в /usr/bin/gnome-terminalи может быть запущен с помощью gnome-terminalкоманды.

Что вы действительно хотите

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

Предполагая, что это то, что вы хотите, как предложил Steeldriver , просто запустите:

sudo -i

У вас будет корневая оболочка, в которой введенные вами команды будут выполняться от имени пользователя root (без необходимости предшествовать им sudo).

Но если вы действительно хотите запустить приложение эмулятора графического терминала от имени пользователя root, читайте дальше. Я представляю два способа: с gksu/ gksdoи с помощью sudoкоманды.

С gksu/gksudo

Поскольку у вас установлен пакет gksuУстановить гксу , вы можете запускать gnome-terminalс правами root с помощью одного из

gksu gnome-terminal
gksudo gnome-terminal

(Поскольку gksuв Ubuntu по умолчанию установлено sudo-mode, они должны быть эквивалентны.)

Запуск gnome-terminalот имени пользователя root без управляющего терминала без полномочий root:

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

Обычно это достигается с помощью Alt+ F2. Появится текстовое поле с меткой Выполнить команду (или аналогичное), и вы сможете ввести свою команду.

Например, в Unity это выглядит так:

Запустите текстовое поле команды в Unity

И так в MATE (GNOME Flashback / Fallback, Xfce, LXDE похожи):

Диалоговое окно «Выполнить команду» в MATE

Обратите внимание, что это работает gksuи gksudoпотому, что они используют графический диалог аутентификации. Если вы нажмете Alt+ F2и запустите sudo ..., вы не сможете взаимодействовать с запросом пароля.

С sudo

Если у вас нет пакета gksu и вы не хотите его устанавливать, вы можете использовать:

sudo -H gnome-terminal

Этот -Hфлаг важен, потому что он устанавливает HOMEпеременную среды /rootвместо домашнего каталога вашего пользователя. Не следует использовать, sudo gnome-terminalпоскольку это может нарушить конфигурацию терминала gnome, принадлежащую пользователю без полномочий root. Для получения дополнительной информации об этом см .:

( sudo -i gnome-terminalтоже хорошо.)

Избавляемся от управляющего некорневого терминала:

Если вы (1) открываете графический терминал, (2) запускаете что-то вроде sudo -H gnome-terminalнего, чтобы создать новый графический корневой терминал, и (3) выходите из исходного графического терминала без полномочий root ... тогда корневой графический терминал также завершает работу. ,

Это потому, что корневой графический терминал отправляется SIGHUP, когда терминал, которому он принадлежит, завершается.

Чтобы предотвратить это, вы можете подумать, что вместо этого можете запустить графический корневой терминал с помощью:

sudo -H gnome-terminal &

Но это будет работать, только если sudoне нужно запрашивать пароль. Если это произойдет, вы не увидите запрос пароля.

Одним из способов обойти это является использование:

sudo -v
sudo -H gnome-terminal

sudo -vсуществует только для этой цели. Как объясняется в статье man sudo, он «обновляет [s] кэшированные учетные данные пользователя, аутентифицируя пользователя при необходимости».

Обратите внимание, что это по-прежнему не будет работать, если запускать прямо из поля Alt+ F2«команда запуска» среды рабочего стола , потому что вам все еще нужен терминал для ввода пароля sudo -v.

Или вы можете сделать это так, что можно назвать традиционным способом, приостановив работу после ее запуска:

  1. Запустите sudo -H gnome-terminalиз исходного некорневого графического терминала.
  2. Введите ваш пароль в соответствии с запросом sudo. Графический терминал запустится.
  3. В терминале без полномочий root нажмите Ctrl+, Zчтобы приостановить корневой терминал. Пока корневой терминал приостановлен, вы не можете его использовать; его интерфейс не будет реагировать на ваши действия.
  4. Выйдите из управляющего терминала без полномочий root с помощью exit. Задание графического корневого терминала будет автоматически приостановлено и отменено некорневым терминалом.

Короче:

sudo -H gnome-terminal
^Z
exit

Но предположим, что вы хотите продолжать использовать оригинальный терминал без полномочий root. Затем вы можете запустить , где находится номер задания графического корневого терминала, чтобы возобновить работу в фоновом режиме. Вы можете бежать, чтобы найти, но вам, вероятно, не придется - это число было показано, как когда вы нажимали + . Например:bg NNjobsN[N]CtrlZ

ek@Ilex:~$ sudo -H gnome-terminal
[sudo] password for ek: 
^Z
[1]+  Stopped                 sudo -H gnome-terminal
ek@Ilex:~$
Элия ​​Каган
источник
Я также могу бежать xterm. сколько терминалов существует в Ubuntu?
αғsнιη
@KasiyA много. Однажды я перестал считать на 25. Замазка, Терминатор тоже используются.
Rinzwind
6

Краткий ответ:

gksudo gnome-terminal
(assuming gksu is installed)

открывает терминал как root:

root@jacob-Satellite-L300:~#

Не нужно объяснять, что вы можете использовать это, чтобы открыть любой терминал как root; например, Vala ( gksudo vala-terminal), Xterm ( gksudo xterm), Termit ( gksudo termit), UXTerm ( gksudo uxterm), Konsole ( gksudo konsole) и так далее.

Якоб Влейм
источник
1
Как насчет этого sudo x-terminal-emulator?
αғsнιη
@KasiyA Вы должны по- прежнему использовать gksu x-terminal-emulator, gksudo x-terminal-emulator, kdesudo x-terminal-emulator(если рабочий стол среда KDE), sudo -H x-terminal-emulatorили sudo -i x-terminal-emulatorвместо этого, чтобы избежать этой проблемы . Аналогично, sudo geditне следует использовать для запуска geditс правами root.
Элия ​​Каган
2

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

С xterm

xterm -bg black -fg red -e sudo -i

'-E sudo -i' говорит xterm переключиться на root в сеансе, и цвета просто для того, чтобы было совершенно очевидно, что это корневая оболочка.

С терминалом Gnome

gnome-terminal -- sudo -i

Лично я связываю привязки клавиш Gnome, чтобы легко запускать терминалы

Перейдите в настройки клавиатуры, добавьте пользовательский ярлык с помощью ярлыка Super + X и команду 'xterm -bg black -fg white -sb -sl 5000', а также root xterm с ярлыком Super + Z и командой 'xterm -bg black -fg red - sb -sl 5000 -e sudo -i '.

В прошлом я склонялся к тому, чтобы предпочесть xterm терминалу Gnome, потому что шрифт маленький и простой, но теперь я перехожу к терминалу, и теперь я запускаю большие экраны с высоким DPI. Цветовое кодирование ваших терминалов - очень хорошая идея, когда вы начинаете запускать различные профили с опасными последствиями, чтобы избежать несчастных случаев (например, локальный корень, машина удаленного клиента, корень удаленного клиента).

NEEK
источник
0

Есть еще один способ сделать это, протестировано и работает на Ubuntu 16.04 LTS:

Сначала установите gnome-панель:

sudo apt install gnome-panel

Затем установите gksu:

sudo apt install gksu

После завершения установки запустите:

gnome-desktop-item-edit ~/Desktop/ --create-new

Это создает ярлык на рабочем столе. Вы должны иметь возможность назвать это. Я назвал мой «X-Term», но ты можешь называть свой почти как угодно. Введите /usr/bin/gksu* для пути «Command».

При запуске нового ярлыка на рабочем столе вам будет предложено запустить приложение. Введите: xterm.

Теперь вам будет предложено ввести пароль; как только вы введете его, у вас будет доступ к рабочему корневому терминалу. Не забудьте использовать только тогда, когда это абсолютно необходимо, и закройте, когда вы закончите с ним.

* при условии, что вы установили Ubuntu с настройками по умолчанию и не изменили ни одну из файловых систем с момента установки.

Питер Дэвид Картер
источник
0

Я использую Debian 9 Stretch

Перейти к сочетаниям клавиш, добавьте команду, как это:

`gksu / usr / bin / x-терминал-эмулятор '

Я поставил Super + Tкак ярлык.

Теперь каждый раз, когда вы хотите открыть терминал от имени пользователя root, просто введите ярлык

Я надеюсь, что это может помочь кому-то в будущем

Alex
источник
-1

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

sudo -s

Для получения дополнительной информации сделайте:

man sudo

и прочитайте -s --shellраздел.

user465589
источник