Когда мы хотим запустить программы как корень, мы используем 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 (например, со всеми переменными среды, установленными для root, а не для вашего пользователя).
Предполагая, что это то, что вы хотите, как предложил steeldriver , просто запустите:
sudo -i
У вас будет корневая оболочка, в которой команды, которые вы вводите, будут запускаться от имени root (без необходимости предшествовать им sudo
).
Но если вы действительно хотите чтобы запустить приложение эмулятора графического терминала от имени пользователя root, читайте дальше. Я представляю два способа: с помощью gksu
/ gksdo
и с помощью команды sudo
.
gksu
/ gksudo
Поскольку у вас установлен пакет gksu , вы можете запустить gnome-terminal
как root с любым из:
gksu gnome-terminal
gksudo gnome-terminal
(Поскольку для gksu
установлено значение sudo-mode в Ubuntu по умолчанию, они должны быть эквивалентными.)
gnome-terminal
от имени пользователя root без управляющего терминала без полномочий root: Практически каждая среда рабочего стола предоставляет средство для запуска команда без необходимости открывать терминал (который, в случае закрытия, обычно приводит к завершению команды).
Обычно это достигается с помощью Alt + F2 . Появится текстовое поле с надписью Выполнить команду (или подобное), и вы сможете ввести свою команду.
Например, в Unity это выглядит так:
И так в MATE (GNOME Flashback / Fallback , Xfce, LXDE аналогичны):
Обратите внимание, что это работает с gksu
и gksudo
, потому что они используют графический диалог аутентификации. Если вы нажмете Alt + F2 и запустите sudo ...
, вы не сможете взаимодействовать с запросом пароля.
sudo
Если у вас нет пакета gksu и вы не хотите его устанавливать, вы можете использовать:
sudo -H gnome-terminal
Флаг -H
важен, потому что он устанавливает HOME
переменную среды в / root
вместо домашнего каталога вашего собственного пользователя. Вы не должны использовать sudo gnome-terminal
, так как это может нарушить конфигурацию gnome-terminal, принадлежащую пользователю без полномочий 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
.
Или вы можете это сделать тем, что можно было бы назвать традиционным способом, приостановив задание после его запуска:
sudo -H gnome-terminal
из исходного графического терминала без полномочий root. sudo
. Графический терминал запустится. 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:~$
Краткий ответ:
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
) и т. Д.
Есть другой способ сделать это, протестированный и работающий на 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 с настройками по умолчанию и не изменили существенно ни одну из файловых систем с момента установки.
Вы можете запустить интерактивную оболочку с:
sudo -s
Для получения дополнительной информации сделайте:
man sudo
и прочтите раздел -s --shell
.
Как указывалось ранее, вы спрашиваете, как запустить Терминал от имени пользователя root, но более вероятно, что вы действительно хотите запустить графическое приложение Терминала от имени обычного пользователя и запустить корневую оболочку внутри него, где вы находитесь. вошел в систему как root. Таким образом, графическому терминальному приложению не предоставляются привилегии root. Предыдущие ответы, похоже, не содержат четких командных строк для использования, поэтому вот что я использую.
xterm -bg black -fg red -e sudo -i
'-e sudo -i 'указывает xterm переключиться на root в сеансе, а цвета просто для того, чтобы было очень очевидно, что это оболочка root.
gnome-terminal - sudo -i
Перейдите в настройки клавиатуры, добавьте пользовательский ярлык с помощью сочетания клавиш 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, потому что шрифт маленький и простой, но я вернусь в терминал теперь я запускаю большие экраны с высоким разрешением. Цветовое кодирование ваших терминалов - очень хорошая идея, если вы начнете запускать разные профили с опасными последствиями, чтобы избежать несчастных случаев (например, локальный корень, удаленный клиентский компьютер, удаленный клиентский корень).
Перейдите к сочетаниям клавиш, добавьте следующую команду:
`gksu / usr / bin / x-terminal-emulator '
Я использовал ярлык Super + T
.
Теперь каждый раз, когда вы хотите открыть терминал как root, просто набирайте ярлык
Я надеюсь, что это может помочь кому-то в будущем
Этот вопрос звучит настолько просто, что должно быть простое решение, верно?
Конечно, вы можете использовать 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"
Хотя здесь всё выглядит просто:
ssh-askpass
, который запускает
в контексте текущего пользователя и запрашивает ваш пропуск.et voilà!. У вас есть терминал, запущенный как root, созданный в контексте текущего пользователя. Теперь, когда вы порождаете новую вкладку, это происходит внутри корневого терминала, а не у пользователя, который породил её.
Внимание! Есть причина, почему все так сложно. Имейте в виду, какую бы сессию X|VNC|RDP вы ни проводили. Это просто держит терминал открытым. Это и есть обратная сторона! Если кто-то может перехватить вашу сессию (как бы это ни было вероятно), root доступ бесплатный! Ваше решение.