Домой / Музыка / Как зайти под суперпользователем в linux. Администратор в Ubuntu, или Что такое sudo

Как зайти под суперпользователем в linux. Администратор в Ubuntu, или Что такое sudo

В любой Linux-системе обязательно есть один привилегированный пользователь - root. Этот пользователь имеет права на выполнение любых действий, удаление любых файлов и изменение любых параметров. Как-то ограничить свободу действий root практически невозможно. С другой стороны, все остальные пользователи системы обычно не имеют большинства необходимых прав, например, прав на установку программ, поскольку это является административной операцией, права на которую есть только у root. Ещё одной распространённой операцией, доступной только суперпользователю, является копирование и изменение файлов в системных папках, куда обычный пользователь доступа не имеет.

Раньше данная проблема решалась достаточно просто: при обладании паролем root можно было зайти в систему под его аккаунтом либо временно получить его права, используя команду su . Потом выполнить все необходимые операции и вернуться обратно под обычного пользователя. В принципе, такая схема работает неплохо, однако у неё есть много существенных недостатков, в частности, невозможно никак (точнее, очень сложно) ограничивать административные привилегии только определённым кругом задач.

Поэтому в современных дистрибутивах Linux вместо root аккаунта для администрирования используется утилита sudo .

В Ubuntu по умолчанию root аккаунт вообще отключён, т.е. вы никаким способом не сможете попасть под root, не включив его. root именно что отключён, т.е. он присутствует в системе, под него всего лишь нельзя зайти. Если вы хотите вернуть возможность использовать root, смотрите ниже пункт о включении root аккаунта.

Что такое sudo

sudo - это утилита, предоставляющая привилегии root для выполнения административных операций в соответствии со своими настройками. Она позволяет легко контролировать доступ к важным приложениям в системе. По умолчанию, при установке Ubuntu первому пользователю (тому, который создаётся во время установки) предоставляются полные права на использование sudo. Т.е. фактически первый пользователь обладает той же свободой действий, что и root. Однако такое поведение sudo легко изменить, об этом см. ниже в пункте про настройку sudo.

Где используется sudo

sudo используется всегда, когда вы запускаете что-то из меню Администрирования системы. Например, при запуске Synaptic вас попросят ввести свой пароль. Synaptic - это программа управления установленным ПО, поэтому для её запуска нужны права администратора, которые вы и получаете через sudo вводя свой пароль.

Однако не все программы, требующие административных привилегий, автоматически запускаются через sudo. Обычно запускать программы с правами администратора приходится вручную.

Запуск графических программ с правами администратора

Для запуска графических программ с правами администратора можно воспользоваться диалогом запуска программ, вызываемым по умолчанию сочетанием клавиш Alt + F2 .

Допустим, нам необходимо запустить файловый менеджер Nautilus с правами администратора, чтобы через графический интерфейс как-то изменить содержимое системных папок. Для этого необходимо ввести в диалог запуска приложений команду

Gksudo nautilus

Вместо gksudo можно подставить gksu , кроме того, пользователи KDE должны вместо gksudo писать kdesu . У вас попросят ввести свой пароль, и, если вы обладаете нужными правами, Nautilus запуститься от имени администратора. Запуск любого графического ПО можно производить с правами администратора, просто написав в диалоге запуска

Gksudo <имя_команды>

Будьте предельно внимательны при работе в приложениях, запущенных с правами администратора. Вы безо всяких предупреждений со стороны системы сможете выполнить любую операцию, в частности, удалить системные файлы, сделав при этом систему неработоспособной.

Запуск программ с правами администратора в терминале

Для запуска в терминале команды с правами администратора просто наберите перед ней sudo:

Sudo <команда>

У вас попросят ввести ваш пароль. Будьте внимательны, пароль при вводе никак не отображается, это нормально и сделано в целях безопасности, просто вводите до конца и нажимайте Enter . После ввода пароля указанная команда исполнится от имени root.

Система какое-то время помнит введённый пароль (сохраняет открытой sudo-сессию). Поэтому при последующих выполнениях sudo ввод пароля может не потребоваться. Для гарантированного прекращения сессии sudo наберите в терминале

Кроме того, часто встречаются ошибки, связанные с каналами в Linux. При исполнении команды

Sudo cat test.txt | grep text > result.txt

с правами root исполнится только cat , поэтому файл result.txt может не записаться. Нужно либо писать sudo перед каждой командой, либо временно переходить под суперпользователя.

Получение прав суперпользователя для выполнения нескольких команд

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

Sudo -s sudo -i

После этого вы перейдёте в режим суперпользователя (с ограничениями, наложенными через настройки sudo), о чём говорит символ # в конце приглашения командной строки. Данные команды по действию похожа на su , однако: - sudo -s - не меняет домашний каталог на /root, домашним остается домашний каталог пользователя вызвавшего sudo -s , что обычно очень удобно. - sudo -i - сменит так же и домашний каталог на /root.

Для выхода обратно в режим обычного пользователя наберите exit или просто нажмите Ctrl + D .

Использование традиционного root аккаунта и команды su

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

Ubuntu 11.04 и младше

Для входа под root достаточно задать ему пароль:

Sudo passwd root

Потом на экране входа нажмите Другой… и введите логин (root) и пароль, который вы задали.

Ubuntu 11.10 и старше

Начиная с версии 11.10 был установлен менеджер входа lightdm, и дело со входом под root обстоит немного сложнее.

1. Устанавливаем root пароль. Введите в терминал:

Sudo passwd root

2. Включаем пункт «Введите логин». Введите в терминал:

Gksu gedit /etc/lightdm/lightdm.conf

В конце файла допишите:

Greeter-show-manual-login=true

3. Перезагружаем lightdm. Введите в терминал:

Sudo service lightdm restart

Все, на экране входа появится пункт «Логин». В поле логин вводим «root», в поле пароль - пароль, который мы задали на первом этапе.

Для обратной блокировки учетной записи root вам потребуется откатить изменения в настройках lightdm, а также заблокировать учетную запись root командой в терминале:

Sudo passwd -l root

Настройка sudo и прав доступа на выполнение различных команд

sudo позволяет разрешать или запрещать пользователям выполнение конкретного набора программ. Все настройки, связанные с правами доступа, хранятся в файле /etc/sudoers . Это не совсем обычный файл. Для его редактирования необходимо (в целях безопасности) использовать команду

Sudo visudo

По умолчанию, в нём написано, что все члены группы admin имеют полный доступ к sudo , о чём говорит строчка

%admin ALL=(ALL) ALL

Подробнее о синтаксисе и возможностях настройки этого файла можно почитать выполнив

Man sudoers

Если вы допустите ошибку при редактировании этого файла, то вполне возможно полностью лишитесь доступа к административным функциям. Если такое случилось, то необходимо загрузиться в recovery mode, при этом вы автоматически получите права администратора и сможете всё исправить. Кроме того, отредактировать этот файл можно с LiveCD.

Разрешение пользователю выполнять команду без ввода пароля

Для того, что бы система не запрашивала пароль при определенных командах необходимо в sudoers после строки # Cmnd alias specification добавить строку, где через запятую перечислить желаемые команды с полным путём(путь команды можно узнать, выполнив which имя_команды :

# Cmnd alias specification Cmnd_Alias SHUTDOWN_CMDS = /sbin/shutdown, /usr/sbin/pm-hibernate, /sbin/reboot

И в конец файла дописать строку

Имя_пользователя ALL=(ALL) NOPASSWD: SHUTDOWN_CMDS

Внимание! Вышеописанные действия не отменяют необходимости ввода команды sudo перед вашей командой

Создание синонимов (alias`ов)

Для того, чтобы не только не вводить пароль для sudo, но и вообще не вводить sudo, сделайте следующее: откройте файл.bashrc, находящейся в вашем домашнем каталоге

nano ~/ bashrc

и добавьте в конец файла строки

alias reboot ="sudo reboot" alias poweroff ="sudo poweroff" alias pm-hibernate="sudo pm-hibernate" alias hibernate ="sudo pm-hibernate" alias shutdown ="sudo shutdown"

Время действия введённого пароля

Возможно, вы хотите изменить промежуток времени, в течение которого sudo действует без ввода пароля. Этого легко добиться добавив в /etc/sudoers (visudo) примерно следующее:

Defaults:foo timestamp_timeout=20

Здесь sudo для пользователя foo действует без необходимости ввода пароля в течение 20 минут. Если вы хотите, чтобы sudo всегда требовал ввода пароля, сделайте timestamp_timeout равным 0.

sudo не спрашивает пароль

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

Однако, в некоторых случаях sudo внезапно перестаёт требовать пароль само по себе. Если сделать visudo , то можно увидеть примерно такую строку, которую пользователь вроде бы не добавлял:

ALL ALL=(ALL) NOPASSWD:ALL

Скорее всего, эта катастрофичная строка была добавлена при установке программы типа Connect Manager от МТС или Мегафона. В таком случае, её нужно поменять на строку, разрешающую с правами root запускать только этот Connect Manager, примерно так:

Юзернейм ALL= NOPASSWD: /путь/к/программе

Есть и другие варианты решения проблемы, небольшое обсуждение .

Инструкция

По умолчанию в Ubuntu возможность логина под учетной записью суперпользователя отключена. Чтобы включить root, нужно знать пароль, который задается во время установки системы. Пароль всегда можно изменить командой через «Терминал» (Menu - Programs - Standart): sudo passwd root
Sudo позволяет использовать права суперпользователя для выполнения следующего запроса, а passwd изменяет пароль для выбранного пользователя, в данном случае для root. После ввода команды введите свой старый, а затем новый пароль.

Активируйте возможность локального входа привилегированного пользователя через графическую оболочку в систему. Для этого перейдите в меню «Система» - «Администрирование» - «Окно входа в систему» - «Безопасность», а затем выберите пункт «Разрешить локальный вход…». Перезагрузите компьютер. Теперь вы можете логиниться как root.

Для выполнения команд от root через «Терминал» в системах Fedora и Mandriva используется префикс su. Откройте файл gdm:
su

gedit /etc/pam.d/gdm
И закомментируйте строку "auth required pam_succeed…" при помощи знака #. После этого перезагрузитесь и попробуйте зайти в качестве суперпользователя из окна выбора учетной записи.

Если же у вас стоит рабочий стол KDE, то отредактируйте файл kdmrc, который находится в папке /usr/share/config/kdm. Найдите строчку AllowRootLogin и измените ее значение на True, после чего сохраните изменения и перезапустите сессию пользователя с помощью соответствующего пункта меню.

Полезный совет

Не стоит использовать учетную запись root для выполнения ежедневных задач. Использовать административную учетную запись нужно только в том случае, если это необходимо. Для просмотра фильмов и редактирования электронных документов вполне пригодны права обычного пользователя системы.

Root является суперпользователем в Unix-подобных системах. Это административная учетная запись, которая имеет логин «root» по умолчанию и легко переименовывается при необходимости. Схема «суперпользователь-пользователь» была придумана для облегчения процесса администрирования и для обеспечения безопасности и стабильности системы. Все действия, производимые над системными файлами, недоступны для обычного пользователя, но возможны для рута.

Инструкция

В Ubuntu Linux по умолчанию зайти в качестве суперпользователя не получится. Чтобы включить учетную запись root, нужно знать его пароль. Обычно он задается при установке системы, но его всегда можно заменить. Откройте «Терминал» («Меню – «Программы» – «Стандартные») и введите команду: sudo passwd root. Команда «sudo» дает системе сигнал, что следующие действия должны выполняться . После этого вам нужно будет ввести свой старый пароль, а затем новый, который вы хотите задать.

Дальше нужно создать возможность локального входа root-а в систему. Для этого перейдите в пункт «Система» - «Администрирование» - «Окно входа в систему». Перейдите на вкладку «Безопасность» и выберите пункт «Разрешить локальный вход для администратора системы».

Для того, чтобы зайти под рутом в операционной системе Fedora, воспользуйтесь терминальной командой «su» и введите соответствующий пароль. После этого откройте файл gdm.

Пользователь root и sudo

Пользователь root в системах GNU/Linux - это пользователь, имеющий административный доступ к вашей системе. Обычные пользователи не имеют этого доступа по соображениям безвасности. Тем не менее в Kubuntu нет пользователя root. Вместо этого, административный доступ предоставляется отдельным пользователям, которые могут использовать приложение "sudo" для выполнения административных задач. Первая учетная запись, созданная при установке системы по умолчанию будет иметь доступ к приложению sudo. Вы можете запретить доступ к sudo или предоставить его с помощью приложения Пользователи и Группы (см. «Пользователи и Группы»).

Если Вы запустите программу, требующую прав суперпользователя, sudo потребует ввести ваш обычный пользовательский пароль. Это гарантирует, что вредоносные приложения не смогут повредить вашу систему, а также напомнит Вам, что Вы собираетесь выполнить административные действия, которые требуют особой осторожности!

Чтобы использовать sudo в командной строке, просто наберите "sudo" перед командой, которую Вы хотите запустить. После этого sudo попросит ввести ваш пароль.

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

Внимание

Будьте осторожны при выполнении административных задач -- вы можете испортить вашу систему!

Некоторые советы по использованию sudo:

    Чтобы использовать терминал пользователя root, наберите "sudo -i" в командной строке

    Вся группа графических утилит конфигурации в Kubuntu уже использует sudo, так что при необходимости у вас попросят пароль с помощью приложения kdesu , которое является графической оболочкой sudo .

    За дальнейшей информацией по программе sudo и отсутствию пользователя root в Kubuntu обращайтесь к странице sudo на сайте Ubuntu wiki.

Запуск программ вручную с привилегиями root

Иногда необходимо выполнить программу с привилегиями root. Это легко сделать с помощью диалога Выполнить команду .

Внимание

Пожалуйста, будьте осторожны, выполняя приложения с привилегиями root, так как это может испортить вашу систему. За дополнительной информацией см. «Пользователь root и sudo» .

    Откройте диалог Выполнить команду , нажав Alt -F2

    Введите название программы, которую вы хотите выполнить, с префиксом kdesu и нажмите Enter . Например, чтобы запустить файловый менеджер Konqueror с привилегиями root, наберите

    1. Использование команды: su

    Многие команды могут быть запущены только суперпользователем, поэтому мы должны знать, как становится им (root-ом). Чтобы сделать это, мы можем использовать команду: su (смена пользователя). Команда su принимает следующие форматы:

    но чаще всего мы будем использовать su для того, чтобы стать пользователем root :

    Su - root

    если имя пользователя в строке не указано, то автоматически предпологается пользователь root, поэтому команду можно сократить:

    но обе команды ведут себя различно. "su " дает текущему пользователю личность, тогда, как "su - " дает текущему пользователю личность вместе с окружением, которое можно было бы получить, зарегистрировавшись в качестве.

    Зачастую пользователи используют "su" для перехода в root. Попробовав запустить команду (например - ifconfig), вы получите: "command not found" error.

    Su Password: ifconfig bash: ifconfig: command not found

    Причина заключается в том, что обычные пользователи системы и root пользователь имеют различные переменные окружения PATH (вы можете посмотреть PATH пользователя при помощи "echo $PATH). После ввода команды Linux, оболочка будет искать пользовательский PATH, чтобы попытаться найти команду для запуска. Она начинает поиск в каждой директории указанной в PATH, пока цель не будет найдена.

    Команды обычных пользователей обычно расположены в /usr/local/bin, /usr/bin и /bin. А команды пользователя root распологаются в основном в /usr/local/sbin, /usr/sbin, /sbin и корневой PATH это отражает. Поэтому, когда вы становитесь суперпользователем при помощи "su -", то вы также принимаете и новый путь PATH к основным командам. А используя только "su", сохраняется пользовательский путь PATH по умолчанию, следовательно, при попытке выполнить программу расположенную в /usr/local/sbin, /usr/sbin, /sbin выдаст результат: "command not found" error. Для более детального объяснения, смотрите справочную страницу (man bash), особенно раздел login shells.

    Таким образом, вы или должны указывать полный путь к команде (пример - /sbin/ifconfig) при использовании "su", либо использовать "su -", когда становитесь root-ом.

    2. Использование Sudo

    Вам не нужно быть суперпользователем каждый раз, когда вы хотите запустить некоторые конкретные административные функции. Благодаря Sudo , вы можете запустить некоторые или все команды как под root-ом. Когда Sudo установлен (пакет: Sudo), вы можете настроить его при помощи команды "visudo" под root-ом. В основном он редактирует (Vim по умолчанию) /etc/sudoers, но это не рекомендуется делать вручную.

    Alex ALL=(ALL)ALL

    Alex - имя пользователя. Сохраните (нажать escape, затем ввести wq), и все готово. Войдите как alex, и запустите например:

    $sudo yum update

    Sudo запросит пароль. Это пароль alex-а, а не пользователя root. Так что будте осторожны, когда вы даете права пользователя с Sudo.

    Но Sudo может сделать не только это, а гораздо больше. Мы можем позволить пользователю или группе пользователей запускать только одну команду или группу команд. Давайте вернемся к нашему sudoers файлу. Начнем с alex и alisa, членов группы administrator. Если мы хотим, чтобы все пользователи из группы"administrator" были в состоянии запустить каждую команду в качестве суперпользователя, мы должны изменить наш пример:

    %admin ALL=(ALL)ALL

    Alex так же может выполнить суперпользовательскую команду, и alisa получила право запускать Sudo, с теми же правами и со своим паролем. Если alex и alisa не члены одной группы, мы можем определить псевдоним пользователя в файле sudoers:

    User_Alias ADMINS = alisa,alex

    Здесь мы определили алиас под названием ADMINS, с членами alisa и alex.

    Тем не менее, мы не хотим, чтобы alex и alisa могли запускать с правами суперпользователя любую програму. Мы хотим, чтобы они могли запускать только "updatedb". Давайте определим команду псевдоним:

    Cmnd_Alias LOCATE = /usr/sbin/updatedb

    Но этого мало! Мы должны сказать Sudo, что пользователи, определенные как ADMINS, могут запускать команды заданные в LOCATE. Чтобы сделать это, мы заменим строки с "%admin" на эти:

    ADMINS ALL = LOCATE

    Это означает, что пользователи входящие в алиас ADMINS могут запускать все команды в алиасе LOCATE.

    На этот раз, /etc/sudoers выглядит следующим образом:

    User_Alias ADMINS = alisa, alex Cmnd_Alias LOCATE = /usr/bin/updatedb ADMINS ALL = LOCATE

    В результате alex и alisa могут запускать updatedb, как root, введя свой пароль.

    Если последнюю строчку в файле изменить:

    ADMINS ALL = NOPASSWD:LOCATE

    тогда alex и alisa смогут выполнить "sudo updatedb" без ввода пароля.

    Можно добавить другие команды в командный алиас и более алиасов в правило. Например мы можем создать алиас NETWORKING содержащий некоторые сетевые команды типа: ifconfig, route или iwconfig:

    Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhcclient, /usr/bin/net, sbin/iptables, /usr/bin/rfcom, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool

    Давайте все это добавим в наш /etc/sudoers файл (с помощью visudo!). А также предоставим нашей ADMINS групе права на выполнение программ и из алиаса NETWORKING:

    User_Alias ADMINS = alice, bob Cmnd_Alias LOCATE = /usr/bin/updatedb Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net,/sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool ADMINS ALL = LOCATE, NETWORKING

    Маленькая проба: войдите в систему как alisa (или alex), и наберите:

    $ping -c 10 -i localhost

    Ответ должен вернуться быстро:

    PING localhost.localdomain (127.0.0.1) 56(84) bytes of data. ping: cannot flood; minimal interval, allowed for user, is 200ms

    Теперь, тоже-самое но с Sudo:

    $sudo ping -c 10 -i 0 localhost PING localhost.localdomain (127.0.0.1) 56(84) bytes of data. 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=1 ttl=64 time=0.049 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=2 ttl=64 time=0.034 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=3 ttl=64 time=0.021 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=4 ttl=64 time=0.030 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=5 ttl=64 time=0.017 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=6 ttl=64 time=0.016 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=7 ttl=64 time=0.016 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=8 ttl=64 time=0.016 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=9 ttl=64 time=0.016 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=10 ttl=64 time=0.016 ms --- localhost.localdomain ping statistics --- 10 packets transmitted, 10 received, 0% packet loss, time 1ms rtt min/avg/max/mdev = 0.016/0.023/0.049/0.010 ms, ipg/ewma 0.187/0.028 ms

    Sudo часто используется для предоставления определенным пользователям частичного доступа к привелигированным командам, чтобы они могли выполнять ограниченные административные функции. Одно из удобств Sudo в том, что все команды записываются в /var/log/secure. Приведенный выше пример будет описан строчкой в журнале:

    Apr 18 11:23:17 localhost sudo: alex: TTY=pts/0 ; PWD=/home/alex ; USER=root ; COMMAND=/bin/ping -c 10 -i 0 localhost

    Вот и все. Теперь никогда не забуду, когда использовал Sudo: "с большой властью приходит большая ответственность".

    2.1 Sudo shell

    Если у вас настроено достаточно прав в sudoers, вы также можете открыть root-ую оболочку shell используя:

    В последних версиях только на CentOS 5, для запуска shell под root, используется sudo -s. Будьте очень осторожны, так как это может менять или создавать новые файлы в домашней директории Root, а установку вести в домашний каталог вызвавшего пользователя.

    3. consolehelper

    Consolehelper представляет собой оболочку для запуска GUI приложений. Когда он начинает работать, он проверяет конфигурацию PAM для требуемого применения. Это означает, что мы можем проводить аутентификацию пользователя с помощью всех установленных модулей PAM. Основной метод состоит в том, чтобы запросить пароль, но если мы имеем надлежащее оборудование. мы можем аутентифицировать с помощью смарткарты, жетонов, отпечатков пальцев и т.д. Конфигурация PAM выходит за рамки этого документа (см. PAM Руководство администратора), поэтому мы рассмотрим этап настройки consolehelper, необходимый для запуска приложений под root-ом и запросом пароля root.

    В качестве примера, давайте настроим /usr/bin/xterm для запуска в качестве root-ого.

    Ln -s /usr/sbin/consolehelper /usr/bin/xterm-root

    Теперь для конфигурирования PAM - создайте файл /etc/pam.d/xterm-root:

    #%PAM-1.0 auth include config-util account include config-util session include config-util

    Наконец, настройте consolehelper на запуск /usr/bin/xterm под root-ом, командой "xterm-root". Создайте файл /etc/security/console.apps/xterm-root:

    USER=root PROGRAM=/usr/bin/xterm

    Вот и все. Запускайте "xterm-root" (из командной строки или ярлыком.desktop file), введите пароль и в путь. Если вы получили сообщение об ошибке: "Xlib: connecttion to ":0.0" refused by server", запустите сначала "xhost local:root".

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

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

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

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

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

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

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

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

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

    Например, это похоже на 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. Для получения дополнительной информации об этом см.

    • RootSudo в вики помощи Ubuntu
    • Почему пользователи не должны использовать обычное sudo для запуска графических приложений?

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

    Sudo -H gnome-terminal ^Z exit

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

    Ek@Ilex:~$ sudo -H gnome-terminal 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), gksudo xterm (gksudo xterm), Termit (gksudo termit), UXTerm (gksudo uxterm), Konsole (gksudo konsole) и так далее.

    Есть еще один способ сделать это, протестировать и работать с 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».