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

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

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

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

Чего Ты Действительно Хочешь

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

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

sudo -i

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

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

С gksu/gksudo

Поскольку у вас есть гксу Install gksu пакет установлен, вы можете запустить gnome-terminal как корень с любым из:

gksu gnome-terminal
gksudo gnome-terminal

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

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

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

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

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

Run a command textbox in Unity

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

Run Command dialog box in 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) закройте исходный некорневой графический терминал ...затем корневой графический терминал также завершает работу.

Это происходит потому, что отправляется корневой графический терминал ВЗДОХ когда терминал, которому он принадлежит, завершается.

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

sudo -H gnome-terminal &

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

В одну сторону чтобы обойти это, нужно использовать:

sudo -vsudo -H gnome-terminal

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

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

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

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

Короче говоря:

sudo -H gnome-terminal^Zexit

Но предположим, что вы тоже хотите продолжать использовать исходный, некорневой терминал. Тогда ты мог бы убежать bg N, где N это номер задания графического корневого терминала для возобновления работы в фоновом режиме. Ты можешь бежать jobs находить N но вам, вероятно, не придется этого делать - этот номер был показан как [N] когда вы нажали Ctrl+Z. Например:

ek@Ilex:~$ sudo -H gnome-terminal[sudo] password for ek: ^Z[1]+ Остановил sudo -H gnome-terminalek@Ilex:~$

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

gksudo gnome-terminal(assuming gksu is installed)

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

root@jacob-Satellite-L300:~#

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

Как указывалось ранее, вы спрашиваете, как запустить терминал от имени 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' и корневой xterm с помощью сочетания клавиш Super+Z и команды 'xterm -bg black -fg red -sb -sl 5000 -e sudo -i'.

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

Этот вопрос звучит так просто, что должно быть простое решение, верно?
Конечно, вы можете использовать gksudo или аналогичные инструменты, но могут быть среды, в которых вы не хотите зависеть от GTK. Это сбивает с толку, но terminal не является shell!

То терминал это та штука, которая показывает тебе вещи, где ракушка это то, что обладает такими причудливыми функциями, как переменные среды, условные обозначения и все такое прочее в сценариях. Вот почему x-terminal-emulator -e ... просто ожидает запуска программы. Здесь невозможны никакие сценарии, он просто запускает новый процесс. Когда терминал запускается, он просто знает, что есть какой-то экран, показывающий ваши данные, и ввод с вашей клавиатуры, который поступает прямо туда.A ракушка обеспечивает всю логику скриптового языка, такого как, например. шш, баш, эш, зшш, ...!

Другое важное различие заключается в том, кто управляет терминал и что ракушка работает внутри него. Вы можете запустить терминал в контексте обычный пользователь, который запускает внутри него корневую оболочку, но у этого есть некоторые недостатки, например. когда вы запускаете новую вкладку, создается новая оболочка, но она возвращается к привилегиям обычный пользователь. Ваше командование над "Новая оболочка, пожалуйста" переходит к терминалу, а не к оболочке!
Разочарование, когда вы понимаете, что вам нужно ввести все эти потеть заполняйте еще раз для каждой открываемой вами вкладки.Итак, есть ли способ открыть терминал, а не оболочку от имени root, без использования таких пакетов, как гксудо? Ожидающий дистрибутив debian контекст:

bash -c "xhost +si:localuser:root; ssh-askpass | sudo -S -Hb /usr/bin/xfce4-terminal --default-working-directory=/root"

Хотя это выглядит просто, здесь происходит много всего:

  • позволять корень чтобы получить доступ к рабочему столу X текущего пользователя.
  • с потеть требуется tty, мы избегаем этого, выполняя ssh-askpass который запускается в контексте текущего пользователя и запрашивает ваш пропуск.
  • потеть теперь читает этот пропуск из stdin (-S), он устанавливает домашнюю папку (-H) и запускает новый процесс, отсоединяющийся от нашего контекста (-b).
  • и, наконец, устанавливает домашнюю папку терминального процесса по умолчанию в корень чтобы избежать попадания в дом текущего пользователя.

вот так!У вас есть терминал, работающий как корень создается в контексте текущего пользователя. Теперь, когда вы создаете новую вкладку, это происходит внутри корневого терминала, а не пользователя, который ее создал.

Внимание!Есть причина, по которой все это так сложно. Имейте в виду, во что бы то ни стало X|VNC|RDP сеанс, в котором вы его запускаете. Он просто держит терминал открытым. Это обратная сторона! Если кто-то сможет перехватить ваш сеанс (как бы это ни было вероятно), root-доступ предоставляется бесплатно! Ваше решение.

Есть еще один способ сделать это, протестированный и работающий на 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 с настройками по умолчанию и не изменили существенно ни одну из файловых систем с момента установки.

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

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

`gksu /usr/bin/x-terminal-эмулятор'

Я положил Super + T как кратчайший путь.

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

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

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

sudo -s

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

man sudo

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

Это gnome-терминал. Так что попробуйте sudo gnome-terminal.

@Guru sudo не следует использовать для запуска графических программ, таких как this. Если gksu/gksudo не установлен (или может не быть), sudo -H ... (или sudo -i ...) может использоваться для запуска графического приложения ... от имени root.

Есть ли на самом деле какое-либо преимущество в запуске самой терминальной программы от имени root? почему бы просто не запустить интерактивную корневую оболочку _ внутри_ терминала с помощью sudo -i?

да, вы правы.