Как выполнить Терминал как корень?

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

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

38
задан 24 August 2014 в 00:22

7 ответов

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

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

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

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

sudo -i

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

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

С помощью gksu / gksudo

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

gksu gnome-terminal
gksudo gnome-terminal

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

Запуск gnome-terminal от имени пользователя root без управляющего терминала без полномочий 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-terminal, принадлежащую пользователю без полномочий root. Для получения дополнительной информации об этом см .:

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

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

Если вы (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 из исходного графического терминала без полномочий root.
  2. Введите свой пароль, предложенный sudo . Графический терминал запустится.
  3. Все еще находясь в терминале без полномочий root , нажмите Ctrl + Z , чтобы приостановить корневой терминал. Пока корневой терминал приостановлен, вы не можете его использовать; его интерфейс не будет реагировать на ваши действия.
  4. Закройте управляющий терминал без полномочий root с помощью exit . Задание графического корневого терминала будет автоматически отключено и отключено терминалом без полномочий root.

Вкратце:

sudo -H gnome-terminal
^Z
exit

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

ek@Ilex:~$ sudo -H gnome-terminal
[sudo] password for ek: 
^Z
[1]+  Stopped                 sudo -H gnome-terminal
ek@Ilex:~$
57
ответ дан 23 November 2019 в 00:25

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

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 ) и т. Д.

6
ответ дан 16 November 2019 в 11:01

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

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

sudo apt install gnome-panel

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

sudo apt install gksu

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

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

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

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

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

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

0
ответ дан 16 November 2019 в 11:01

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

sudo -s

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

man sudo

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

-1
ответ дан 16 November 2019 в 11:01

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

С xterm

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

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

С Gnome Terminal

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

2
ответ дан 16 November 2019 в 11:01

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

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

`gksu / usr / bin / x-terminal-emulator '

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

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

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

0
ответ дан 23 November 2019 в 00:25

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

Терминал terminal - это та штука, которая показывает вам вещи, где shell - это штука, которая имеет эти причудливые возможности, такие как переменные окружения, кондиционеры и все эти вещи для написания сценариев. Вот почему x-terminal-emulator -e ... просто ожидает, что программа будет запущена. Никаких скриптов здесь быть не может, она просто запускает новый процесс -e .... Когда терминал запускается, он просто знает, что есть какой-то экран, показывающий вещи и ввод с клавиатуры, который наливается прямо туда. Оболочка shell передаёт всю логику скриптового языка, такого как sh, bash, ash, zsh, ....!

Другое важное различие - кто запускает terminal и что shell запускает внутри него. Вы можете запустить terminal в контексте обычного пользователя, который запускает внутри него корневую оболочку, но у этого есть некоторые недостатки, например, когда вы запускаете новую вкладку, создается новая оболочка, но она возвращается к привилегиям обычного пользователя . Ваша команда 'New shell please' идет в терминал, а не в оболочку!
Разочарование, когда вы понимаете, что вам нужно снова вводить все эти sudo вещи для каждой открываемой вкладки. Есть ли способ открыть терминал, а не оболочку в качестве корневой без использования пакетов типа gksudo? Ожидая debian context:

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

Хотя здесь всё выглядит просто:

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

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

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

2
ответ дан 5 January 2021 в 23:03

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

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